C# 如何使用c中的文本框在多列listview控件中搜索项#

C# 如何使用c中的文本框在多列listview控件中搜索项#,c#,.net,winforms,listview,visual-studio-2012,C#,.net,Winforms,Listview,Visual Studio 2012,我正在使用c#开发一个windows窗体应用程序。我使用的listview控件的view属性设置为Details。它有两列,ID和Name。listview中的数据是数据绑定的 现在,我想使用文本框向listview控件添加搜索功能,即输入到文本框的任何字符串都将在列、ID和名称中的listview项上搜索,当找到该项时,它将被选中并成为listview的顶部项 private void textBox1_TextChanged(object sender, EventArgs e)

我正在使用c#开发一个windows窗体应用程序。我使用的listview控件的view属性设置为Details。它有两列,ID和Name。listview中的数据是数据绑定的

现在,我想使用文本框向listview控件添加搜索功能,即输入到文本框的任何字符串都将在列、ID和名称中的listview项上搜索,当找到该项时,它将被选中并成为listview的顶部项

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        try
        {
            ListViewItem foundItem = listView1.FindItemWithText(textBox1.Text, false, 0, true);
            if (foundItem != null)
            {
                listView1.TopItem = foundItem;
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

是否已将View to list设置为在初始化ViewList时使用FindItemWithText方法?如果没有,请在初始化listview时添加以下行。没有它,FindItemWithText方法将无法工作

listView1.View = View.List;

编辑:我发现问题在您的listView1.TopItem=foundItem中; 该方法实际上找到了您搜索的数据,但无法将其添加到列表的顶部。设置TopItem总是有问题。 不管怎样,你的搜索很好。
尝试将您的FoundItem添加到新列表,它将起作用

你的问题到底是什么?你试过什么?什么有效?什么没有?你在哪里需要帮助?我想,文本框中输入的任何文本都将根据两列进行搜索,一旦找到该项,它就会被选中并自动显示在列表视图的顶部。我通过msdn找到了上述代码,但它在我的应用程序上不起作用。请添加完整的代码,包括列表框初始化。这样我们就可以找出错误的具体位置。我发现问题出在您的listView1.TopItem=foundItem;该方法实际上找到了您搜索的数据,但无法将其添加到列表的顶部。设置TopItem总是有问题。不管怎样,你的搜索很好。。