c#为文件浏览器创建搜索栏

问题描述 投票:0回答:1

我正在尝试为我的文件浏览器创建一个搜索栏,但使用特定的单词,例如,如果您键入“ 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

c# file search explorer
1个回答
0
投票

[您没有说您正在使用什么框架,例如WinForms,MVVM(XAML),但无论如何,对于大多数用户而言,第一次尝试以编程方式设置显示数据的麻烦是UI和数据代码在不同的线程中运行。

您将需要执行以下操作:

CodeToChangeListView ?. Invoke(…)

© www.soinside.com 2019 - 2024. All rights reserved.