将文件从 C# 窗口窗体中的文件夹填充到列表框中
本文关键字:填充 文件夹 列表 窗口 窗体 文件 | 更新日期: 2023-09-27 18:33:41
我是 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,而是针对某些按钮单击更新列表框,否则您的代码看起来很好。最初,您的列表框中可能没有任何项目,这就是为什么当您单击它时不会触发 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");
}
这可能
适用于;)
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);
}
}
我想
是错误的事件。将该代码移动到窗体/控件的构造函数,或将其附加到另一个控件的事件。当列表框的初始状态为空时,重新填充选定索引上的列表框已更改是没有意义的。