6

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

フォームを実行すると、フォルダのファイルが表示されません???

4

3 に答える 3

12

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");
}
于 2012-05-09T12:37:01.990 に答える
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);
    }
}
于 2012-05-09T12:37:51.553 に答える
1

間違ったイベントだと思います。そのコードをフォーム/コントロールのコンストラクターに移動するか、別のコントロールのイベントにアタッチします。リストボックスの初期状態が空のときにSelectedIndexChangedにlistBoxを再設定しても、意味がありません。

于 2012-05-09T12:39:32.820 に答える