2010-02-18 66 views
2

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

列表框中包含文件和组合框,需要由它们的扩展来过滤他们

请帮助我新的编程

+0

你能提供一个你想要做的事情的代码片段吗?这个问题是相当可以解决的,但采取的方法很大程度上取决于你如何填充这些组合和列表框。 – CrimsonX 2010-02-18 20:33:34

回答

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

+0

我知道对不起,我已决定将它更改为列表框才更有意义。 我试过这段代码,但它似乎只是将它添加到列表的底部而不是过滤它 – roller 2010-02-18 20:48:18

+0

你是对的。我很抱歉。看到我上面的编辑。在应用过滤器之前清除列表框,如果它包含任何内容。 – Aaron 2010-02-18 20:50:55

+0

THANKYOU !!!!!现在它工作的很好。 Thankyou Thankyou谢谢 – roller 2010-02-18 20:59:26

0

那么你可以加载的项目在一个DataTable和assing的数据表到listbox.datasource财产。然后,您可以在DataTable上设置Filter属性来过滤项目。

另一种方式是保持在一个单独的列表中的项目,一个assing LINQ查询实现滤波器的ListBox.DataSource财产一旦组合框变化的SelectedItem。

0

您需要对数据源的列表框的工作,说这是文件名列表
完成的一些推广:

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

得到的ComboBoxto选定的扩展,并使用它来订购列表框的DataSource(文件)。

 string fileExtemsion;    

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

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