2012-05-09 67 views
6

我是C#中的新手,我有2個Listboxes l - > istBox1和listBox2,我想將文件夾中的文件加載到這些列表框中。 我試圖像這樣: listBox1:從C#窗體中的文件夾中將文件填充到列表框中

private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      DirectoryInfo dinfo = new DirectoryInfo(@"C:\TestLoadFiles"); 
      FileInfo[] Files = dinfo.GetFiles("*.rtdl"); 
      foreach (FileInfo file in Files) 
      { 
       listbox1.Items.Add(file.Name); 
      } 

     } 

listBox2:

private void listBox2_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      DirectoryInfo dinfo = new DirectoryInfo(@"C:\TestLoadFiles"); 
      FileInfo[] Files = dinfo.GetFiles("*.dlz"); 
      foreach (FileInfo file in Files) 
      { 
       listbox2.Items.Add(file.Name); 
      } 
     } 

當我運行的形式,從文件夾中的文件不顯示???

+0

不錯。現在你的問題是什麼? – Reniuz

+0

有什麼問題?在爲listbox1 selectedindexchanged處理程序,你再次填充listbox1 – rt2800

+0

你已經做到了,實際上... – Tigran

回答

11

而不是listBox1_SelectedIndexChanged,更新列表框對某些按鈕單擊,否則您的代碼看起來不錯。最初,您可能沒有任何項目在您的列表框中,這就是爲什麼SelectedIndexChanged不會被點擊時被解僱。

編輯:(由於該問題已被編輯,我將更新我的答案)
要使用文件打開列表框,應該這樣做,除了SelectedIndexChanged以外的其他情況。因爲在應用程序的開始時,列表框爲空,並且當列表框中有項目並且用戶單擊它時,SelectedIndexChanged事件被觸發。您可以創建下面的函數

private void PopulateListBox(ListBox lsb, string Folder, string FileType) 
{ 
    DirectoryInfo dinfo = new DirectoryInfo(Folder); 
    FileInfo[] Files = dinfo.GetFiles(FileType); 
    foreach (FileInfo file in Files) 
    { 
     lsb.Items.Add(file.Name); 
    } 
} 

現在你可以在對一個按鈕,點擊或形式加載某些事件調用該函數與您的列表框。例如

private void Form1_Load(object sender, EventArgs e) 
{ 
    PopulateListBox(listbox1, @"C:\TestLoadFiles", "*.rtld"); 
    PopulateListBox(listbox2, @"C:\TestLoadFiles", "*.other"); 
} 
+0

是的,我是一個愚蠢的人。所以這個listbox事件將在列表框中有項目並且用戶點擊它時觸發。謝謝你,那麼我怎樣才能從文件夾填充列表? – linguini

+0

@KarthikRANGARAJ,看到我更新的答案,你可以使用方法 – Habib

+1

是的你缺少'使用System.IO;' – Reniuz

1

這可能會實現;)

private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    DirectoryInfo dinfo = new DirectoryInfo(@"C:\TestLoadFiles"); 
    FileInfo[] Files = dinfo.GetFiles("*.rtdl"); 
    foreach (FileInfo file in Files) 
    { 
     listbox2.Items.Add(file.Name); 
    } 
} 
1

錯誤事件我想。將該代碼移動到窗體/控件的構造函數,或將其附加到另一個控件的事件。當列表框的初始狀態爲空時,重新填充SelectedIndexChanged上的列表框是沒有意義的。

相關問題