使用目录中的文件名填充组合框/列表框



我正试图用目录中的文件名填充ListBox。然而,当我重新编译程序时,我的代码就可以工作了,这些项就不在了。此外,当我单击ListBox中的项目时,ListBox的内容会一次又一次地重复。任何指导都将不胜感激,谢谢。

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    DirectoryInfo dir = new DirectoryInfo(".\Notes\");
    FileInfo[] files = dir.GetFiles("*.txt");
    foreach ( FileInfo file in files )
    {
        listBox1.Items.Add(file);
    }
}

您在不正确的事件中填充了ListBox。因此,每次选择项目时,都会再次填充ListBox。您应该将它放在另一个事件中,如Button_ClickForm_load:

private void Form1_Load(object sender, EventArgs e)
{
    DirectoryInfo dir = new DirectoryInfo(".\Notes\");
    FileInfo[] files = dir.GetFiles("*.txt");
    foreach ( FileInfo file in files )
    {
        listBox1.Items.Add(file);
    }
}
//Or in a Button_Click event
private void button1_Click(object sender, EventArgs e)
{
    DirectoryInfo dir = new DirectoryInfo(".\Notes\");
    ....
}

因此,感谢@S.Akbari的建议,我的问题解决方案如下。

      public Form1()
    {
        InitializeComponent();
             DirectoryInfo dir = new DirectoryInfo(".\Notes\");
        FileInfo[] files = dir.GetFiles("*.txt");
        foreach (FileInfo file in files)
        {
            listBox1.Items.Add(file);
        }
    }

最新更新