隐藏" .txt"扩展和从文件夹加载文件名

时间:2018-04-25 21:20:49

标签: c#

我需要隐藏" .txt" " combobox"中的扩展我不知道怎么做。

.txt

我怎么能这样做,那些文件将从实际的addresesr和一些文件夹中加载?现在我使用这段代码:

我现在正在使用此代码:

DirectoryInfo di = new DirectoryInfo(@"C:\Users\JD_1609\source\repos\WindowsFormsApp1\WindowsFormsApp1\bin\Debug\PCs");
FileInfo[] Files = di.GetFiles("*.txt");

comboBox1.DataSource = Files;
comboBox1.DisplayMember = "Name";

但是,如果我将它转移到其他电脑,所以它将无法正常工作? 那么我如何从实际的发件人加载文件呢?

1 个答案:

答案 0 :(得分:0)

要获取包含扩展名的文件的名称,您可以使用Path类的漂亮GetFileNameWithoutExtension()方法。

如果您希望DataSource显示没有扩展名的名称,但将“值”保留为FileInfo,则可以使用一点Linq将FileInfo[]转换为Dictionary<string, FileInfo>然后,适当地设置显示和值成员属性:

comboBox1.DataSource = new BindingSource(
                           Files.ToDictionary(x => Path.GetFileNameWithoutExtension(x.Name), 
                                              x => x), 
                           null);
comboBox1.DisplayMember = "Key";
comboBox1.ValueMember = "Value";

请记住,Dictionary不能有重复的密钥。在您的代码中,您可以获取单个目录的所有文本文件,因此即使我们剥离扩展名,我们也可以确定不会有重复项。如果您以一种将重复项引入字典的方式更改您的查询,我的答案将抛出异常。

如果你需要的只是显示和值为没有扩展名的文件名,那就更容易了:

comboBox1.DataSource = Files
                           .Select(x => Path.GetFileNameWithoutExtension(x.Name))
                           .ToArray();