2010-02-18 68 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();