【发布时间】:2011-01-18 12:25:11
【问题描述】:
如何使用 c# 和 windows 窗体使用组合框过滤列表框中的项目?
列表框包含文件,组合框需要按扩展名过滤它们
请帮助我是编程新手
【问题讨论】:
-
你能提供你想要做什么的代码 sn-p 吗?这个问题是可以解决的,但采取的方法很大程度上取决于您如何填充这些组合框和列表框。
标签: c# combobox listbox filter
如何使用 c# 和 windows 窗体使用组合框过滤列表框中的项目?
列表框包含文件,组合框需要按扩展名过滤它们
请帮助我是编程新手
【问题讨论】:
标签: c# combobox listbox filter
这几乎与您上一个问题完全相同。同样的答案也适用。
在组合框的选定索引更改事件中,我会根据从组合框中选择的过滤器将项目添加到列表框中。您可以使用 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);
}
【讨论】:
您可以将项目加载到数据表中并将数据表分配给 listbox.datasource 属性。然后你可以在DataTable上设置Filter属性来过滤项目。
另一种方法是将项目保存在单独的列表中,一旦 ComboBox 的 SelectedItem 发生更改,将实现过滤器的 linq 查询分配给 ListBox.DataSource 属性。
【讨论】:
您需要处理 ListBox 的数据源,说它是一个文件名列表
完整的扩展:
List<string> files = new List<string>(); // sample DataSource
从 ComboBoxto 中获取选定的扩展名并使用它来订购 ListBox 数据源(文件)。
string fileExtemsion;
var orderedFiles = files.OrderBy(o => o.EndsWith(fileExtemsion)); // order
listBox.DataSource = orderedFiles; // setting Datasource
listBox.DataBind();
【讨论】: