[英]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.