我有一个列出目录的组合框,我有一个列表框,显示目前在组合框中选择的目录中的文件。我想要它,所以当您更改组合框中的选定项目时,列表框会使用新文件进行更新。
我如何实现这一目标?
我目前的尝试:
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);
}
}
答案 0 :(得分:0)
您可以将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
,组合框中的字符串是您要过滤的目录的完整路径(或相对路径)。
如果不是,那么你需要适应你的目的。