[英]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.