[英]How to filter a listbox using a combobox
如何使用C#和Windows窗体的组合框过滤列表框中的项目?
列表框包含文件,组合框需要按扩展名对其进行过滤
请帮助我是编程新手
这几乎与您上一个问题完全相同。 相同的答案适用。
在组合框的选定索引更改事件上,我将根据从组合框中选择的过滤器,将项目添加到列表框中。 您可以使用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 DataSource(文件)。
string fileExtemsion;
var orderedFiles = files.OrderBy(o => o.EndsWith(fileExtemsion)); // order
listBox.DataSource = orderedFiles; // setting Datasource
listBox.DataBind();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.