簡體   English   中英

按當前目錄從ComboBox到ListBox篩選文件

[英]Filter files by current directory from ComboBox to a ListBox

我有一個列出目錄的組合框,並且有一個列表框顯示當前在組合框中選擇的目錄中的文件。 我想要它,因此當您更改組合框中的所選項目時,列表框將使用新文件進行更新。

我該如何實現?

我目前的嘗試:

private void Form1_Load(object sender, EventArgs e)
{
    DirectoryInfo dinfo = new DirectoryInfo(@"C:\Users\guest\Desktop\test");
    DirectoryInfo[] folders = dinfo.GetDirectories();
    FileInfo[] Files = dinfo.GetFiles();

    cbobox.DataSource = folders;

    foreach(FileInfo file in Files)
    {
        lstbox.Items.Add(file.Name);
    }
}

您可以設置dinfo在路徑combobox

假設您的組合框只有目錄的字符串

dinfo = new DirectoryInfo(combobox.SelectedItem);

而其余的代碼保持不變

private void Form1_Load(object sender, EventArgs e)
{
    DirectoryInfo dinfo = new DirectoryInfo(combobox.SelectedItem);
    DirectoryInfo[] folders = dinfo.GetDirectories();
    FileInfo[] Files = dinfo.GetFiles();

    cbobox.DataSource = folders;

    foreach(FileInfo file in Files)
    {
        lstbox.Items.Add(file.Name);
    }
}

如果要在選擇組合框中的新項目時更改它,則需要使用一個事件。

private void Form1_Load(object sender, EventArgs e)
{
    RefreshList();
    combobox.SelectedIndexChanged += 
        new System.EventHandler(ComboBox1_SelectedIndexChanged);
}

private void RefreshList() 
{
    DirectoryInfo dinfo = new DirectoryInfo(combobox.SelectedItem);
    DirectoryInfo[] folders = dinfo.GetDirectories();
    FileInfo[] Files = dinfo.GetFiles();

    cbobox.DataSource = folders;

    foreach(FileInfo file in Files)
    {
        lstbox.Items.Add(file.Name);
    }
}

private void ComboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
    RefreshList();
}

請閱讀

此代碼假定您的組合框具有名稱combobox ,並且組合框中的字符串是您要作為過濾依據的目錄的完整路徑(或相對路徑)。 如果不是,則需要適應以實現您的目的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM