我正在尝试为我的文件浏览器创建一个搜索栏,但使用特定的单词,例如,如果您键入“ e”,我将得到所有文件和文件夹,包括“ e”,并带有任何扩展名
有我的代码:
private void runProcedureCode()
{
listView1.Items.Clear();
imageList1.Images.Clear();
string[] files = Directory.GetFiles("D:\\test");
foreach (string file in files)
{
FileInfo fi = new FileInfo(file);
imageList1.Images.Add(Icon.ExtractAssociatedIcon(file));
listView1.Items.Add(Path.GetFileNameWithoutExtension(fi.Name), imageList1.Images.Count - 1);
}
}
private void runSearchProcedureCode(string valueToFind)
{
listView1.Items.Clear();
imageList1.Images.Clear();
string[] files = Directory.GetFiles(@"D:\\test", valueToFind, SearchOption.AllDirectories);
foreach (string file in files)
{
FileInfo fi = new FileInfo(file);
imageList1.Images.Add(Icon.ExtractAssociatedIcon(file));
listView1.Items.Add(Path.GetFileNameWithoutExtension(fi.Name), imageList1.Images.Count - 1);
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text == "")
{
runProcedureCode();
} else {
runSearchProcedureCode(textBox1.Text);
}
}
巫婆,如果我在我的搜索框上键入任何名为“ textBox1的单词:listView1将为空。
你有什么主意吗?预先感谢
编辑:*来自WinForms
[您没有说您正在使用什么框架,例如WinForms,MVVM(XAML),但无论如何,对于大多数用户而言,第一次尝试以编程方式设置显示数据的麻烦是UI和数据代码在不同的线程中运行。
您将需要执行以下操作:
CodeToChangeListView ?. Invoke(…)