C# 如何使用组合框筛选列表框

C# 如何使用组合框筛选列表框,c#,combobox,listbox,filter,C#,Combobox,Listbox,Filter,如何使用c#和windows窗体的组合框过滤列表框中的项目 列表框包含文件,组合框需要按扩展名筛选这些文件 请帮助我,我是编程新手这几乎与你上一个问题完全相同。同样的答案也适用 在组合框的selected index changed事件中,我会根据从组合框中选择的过滤器将项目添加到列表框中。您可以使用System.IO.DirectoryInfo过滤给定文件扩展名的目录 //Clear your listBox before filtering if it contains items if(y

如何使用c#和windows窗体的组合框过滤列表框中的项目

列表框包含文件,组合框需要按扩展名筛选这些文件


请帮助我,我是编程新手

这几乎与你上一个问题完全相同。同样的答案也适用

在组合框的selected index changed事件中,我会根据从组合框中选择的过滤器将项目添加到列表框中。您可以使用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);
}
//如果列表框包含项目,则在筛选前清除列表框
如果(yourListBox.Items.Count>0)
yourListBox.Items.Clear();
DirectoryInfo dInfo=新的DirectoryInfo();
FileInfo[]FileInfo=dInfo.GetFiles(“*”+);
foreach(FileInfo中的FileInfo文件)
{  
yourListBox.Items.Add(file.Name);
}

您可以在datatable中加载项,并将datatable分配给listbox.datasource属性。然后,您可以在DataTable上设置Filter属性来过滤项目


另一种方法是将项目保存在一个单独的列表中,这是一个assing linq查询,在组合框的SelectedItem发生更改时实现对ListBox.DataSource属性的筛选。

您需要对ListBox的数据源进行操作,比如说它是一个文件名列表
包括扩展部分:

List<string> files = new List<string>();  // sample DataSource

你能提供一个你要做的事情的代码片段吗?这个问题是完全可以解决的,但采取的方法将在很大程度上取决于如何填充这些组合框和列表框。是的,我知道很抱歉,我决定将其更改为列表框,这样更有意义。我尝试过这段代码,但它似乎只是将它添加到列表的底部,而不是过滤它。你是对的。我道歉。见我的编辑上面。如果列表框包含任何内容,请在应用筛选器之前清除它。很高兴我能提供帮助。别忘了接受这个答案作为正确答案:D。
       string fileExtemsion;               

       var orderedFiles = files.OrderBy(o => o.EndsWith(fileExtemsion)); // order          

       listBox.DataSource = orderedFiles;       // setting Datasource 
       listBox.DataBind();