2012-05-09 30 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上的列表框是没有意义的。

相关问题