【问题标题】:Populate files into a listbox from a folder in C# windows forms将文件从 C# windows 窗体中的文件夹填充到列表框中
【发布时间】:2012-05-09 12:32:09
【问题描述】:

我是 C# 的新手,我有 2 个列表框 l-->istBox1 和 listBox2,我想将文件夹中的文件加载到这些列表框中。 我试过这样: listBox1:

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);
            }
        }

当我运行表单时,文件夹中的文件没有显示???

【问题讨论】:

  • 不错。现在你的问题是什么?
  • 有什么问题?在 listbox1 的 selectedindexchanged 处理程序中,您再次填充 listbox1
  • 其实你已经做到了……
  • 您真的在 listBox1 上使用选定的索引更改事件并填充到 listBox1 吗?你需要的只是使用 listBox2.Items.Add...
  • 我有 2 个列表框,我想从同一个文件夹加载 2 个不同的文件。所以,当我运行表单时,列表框文件夹中的文件是空的。

标签: c# winforms visual-studio visual-studio-2010


【解决方案1】:

而不是 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");
}

【讨论】:

  • 是的,我是个笨蛋。因此,当列表框中有项目并且用户单击它时,将触发此列表框事件。谢谢你,那我如何从文件夹中填充列表??
  • @KarthikRANGARAJ,看我更新的答案,可以用方法
  • 是的,你错过了using System.IO;
  • 现在,我知道要加载我应该包含 System.IO 的文件;
【解决方案2】:

这可能有效;)

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);
    }
}

【讨论】:

    【解决方案3】:

    我想是错误的事件。将该代码移动到窗体/控件的构造函数或将其附加到另一个控件的事件。当列表框的初始状态为空时,在 SelectedIndexChanged 上重新填充列表框没有意义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-23
      • 2012-02-13
      相关资源
      最近更新 更多