我需要隐藏" .txt" " combobox"中的扩展我不知道怎么做。
我怎么能这样做,那些文件将从实际的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";
但是,如果我将它转移到其他电脑,所以它将无法正常工作? 那么我如何从实际的发件人加载文件呢?
答案 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();