C# ListBox仅显示文件名问题求助:需将路径改为仅文件名
解决ListBox显示文件名而非完整路径的问题
嘿,我瞅了下你的代码,有几个明显的小问题导致ListBox显示System.Str...,没法正确展示文件名。咱们来一步步修正它:
先说说你代码里的问题:
- 循环对象错了:你写的
foreach (var item in folder),这里folder是个字符串路径,循环的是路径里的每一个字符,完全不是你要遍历的文件列表! - 错误转换文件数组:
Convert.ToString(txtfiles)会把整个字符串数组直接转成System.String[],所以显示的时候就变成截断的System.Str...了。 - 没合并文件列表:你分别获取了txt和lua文件,但压根没把它们合并到一起处理。
修正后的代码:
private void FlatButton3_Click(object sender, EventArgs e) { ListBox1.Items.Clear(); string folder = @"C:/Aatrox"; // 获取目标文件夹下的txt和lua文件,合并成一个数组 string[] txtFiles = Directory.GetFiles(folder, "*.txt"); string[] luaFiles = Directory.GetFiles(folder, "*.lua"); string[] allFiles = txtFiles.Concat(luaFiles).ToArray(); // 遍历每个文件路径,提取纯文件名添加到ListBox foreach (string filePath in allFiles) { ListBox1.Items.Add(Path.GetFileName(filePath)); } }
关键修改点说明:
- 合并文件数组:用
Concat把txt和lua文件列表合并成一个数组,这样就能一次性遍历所有你需要的文件了。 - 正确遍历文件路径:循环的是
allFiles里的每个文件路径(明确声明string filePath),而不是文件夹字符串。 - 正确提取文件名:把单个文件路径传给
Path.GetFileName(),就能精准提取出Text.txt这种纯文件名了。
额外小提示:
如果你想去掉文件扩展名(比如只显示Text而不是Text.txt),可以把Path.GetFileName(filePath)换成Path.GetFileNameWithoutExtension(filePath)就行~
内容的提问来源于stack exchange,提问作者Aatroxon
相关产品推荐
相关产品推荐

