如何使用组合框过滤列表框

时间:2010-02-18 20:30:07

标签: c# combobox listbox filter

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

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

过滤它们

请帮助我开始编程

3 个答案:

答案 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);
}

Filtering a texbox with a combobox

答案 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();