【问题标题】:how to search item in a multi-column listview control using a textbox in c#如何使用 C# 中的文本框在多列列表视图控件中搜索项目
【发布时间】:2014-04-28 10:29:26
【问题描述】:

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

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

    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);
        }
    }

【问题讨论】:

  • 您的问题到底是什么?你试过什么?什么有效?什么没有?您在哪里需要帮助?
  • 我想要,在文本框中输入的任何文本都将针对两列进行搜索,一旦找到该项目,它就会被选中并自动出现在列表视图的顶部。
  • 我在 msdn 上找到了上面的代码,但它不适用于我的应用程序。 link

标签: c# .net winforms listview visual-studio-2012


【解决方案1】:

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

listView1.View = View.List;

编辑:我发现问题出在您的 listView1.TopItem = foundItem; 该方法实际上找到了您搜索的数据,但无法将其添加到列表顶部。设置 TopItem 总是有问题。 http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.topitem.aspx 无论如何,您的搜索工作正常。 尝试将您的 FoundItem 添加到新列表中,它会起作用..

【讨论】:

  • 请添加完整的代码,包括 ListBox 初始化。这样我们就可以找出错误的确切位置。
  • 我发现问题出在你的 listView1.TopItem = foundItem;该方法实际上找到了您搜索的数据,但无法将其添加到列表顶部。设置 TopItem 总是有问题。 msdn.microsoft.com/en-us/library/… 无论如何,您的搜索工作正常..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-18
  • 1970-01-01
  • 2012-11-10
  • 1970-01-01
  • 1970-01-01
  • 2016-08-31
相关资源
最近更新 更多