如何使用c#和windows窗体使用组合框过滤列表框中的项目?
列表框包含文件,组合框需要按扩展名
过滤它们请帮助我开始编程
答案 0 :(得分:1)
这与您上一期的问题几乎完全相同。同样的答案也适用。
在组合框的选定索引更改事件中,我会根据从组合框中选择的过滤器将项目添加到列表框中。您可以使用System.IO.DirectoryInfo在给定文件扩展名的情况下过滤目录。
//Clear your listBox before filtering if it contains items
if(yourListBox.Items.Count > 0)
yourListBox.Items.Clear();
DirectoryInfo dInfo = new DirectoryInfo(<string yourDirectory>);
FileInfo[] fileInfo = dInfo.GetFiles("*" + <string yourChosenFileExtension>);
foreach (FileInfo file in fileInfo)
{
yourListBox.Items.Add(file.Name);
}
答案 1 :(得分:0)
您可以在数据表中加载项目并将数据表分配到listbox.datasource属性。然后,您可以在DataTable上设置Filter属性以过滤项目。
另一种方法是将项目保存在一个单独的列表中,一旦ComboBox的SelectedItem发生更改,就会向linq查询实现对ListBox.DataSource属性的过滤。
答案 2 :(得分:0)
你需要处理ListBox的DataSource,比如它是一个文件名列表
完成扩展:
List<string> files = new List<string>(); // sample DataSource
从ComboBoxto获取所选扩展名并使用它来命令ListBox DataSource(文件)。
string fileExtemsion;
var orderedFiles = files.OrderBy(o => o.EndsWith(fileExtemsion)); // order
listBox.DataSource = orderedFiles; // setting Datasource
listBox.DataBind();