VB.NET ListView 文本更改搜索

标签 vb.net listview search filter textchanged

我尝试在 stackoverflow 上搜索并实现我找到的代码,但没有成功。随着文本的更改,我想使用文本框中的当前文本来过滤 ListView 项目(因此未关闭匹配的项目将被删除),并且它只留下列中包含的内容。

以下是我的意思的示例:

搜索:“乔治”

|1|安德森·席尔瓦|安德森·席尔瓦是...|

|2|乔治圣皮埃尔| 乔治是...|

的冠军

|3|乔治 索托罗波利斯| 乔治索托罗波利斯是轻量级拳手|

通过此搜索,仅返回第 2 行和第 3 行。第一行将被省略并且不显示。一旦我删除了这些条款,它就会显示出来。

这是我目前拥有的代码:

Private Sub tbSearch_TextChanged(sender As Object, e As System.EventArgs) Handles tbSearch.TextChanged
    lwArticles.BeginUpdate()

    If tbSearch.Text.Trim().Length = 0 Then
        'Clear listview
        lwArticles.Clear()

        'If nothing is in the textbox make all items appear
        For Each item In originalListItems
            lwArticles.Items.Add(item)
        Next
    Else
        'Clear listview
        lwArticles.Clear()

        'Go through each item in the original list and only add the ones which contain the search text
        For Each item In originalListItems
            If item.Text.Contains(tbSearch.Text) Then
                lwArticles.Items.Add(item)
            End If
        Next
    End If
    lwArticles.EndUpdate()

End Sub

它似乎有效,但一旦我在 tbSearch 中输入某些内容,我就看不到 ListView 项目。滚动条会变小/变大,具体取决于是否由于执行搜索而有更多/更少的项目。我的问题似乎是它们不可见

谢谢!

最佳答案

Listview.Clear 清除项目、列和组。看来您只想清除这些项目,因此请调用 lwArticles.Items.Clear 而不是 lwArticles.Clear

关于VB.NET ListView 文本更改搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13958512/

相关文章:

java - 显示键盘时 ListView 不调整大小

android - 我们如何在java文件中设置 ListView 的高度?

.net - 在 WPF 组合框中查找项目

vb.net - vb.net 中 HttpUtility.UrlEncode 的等价物是什么?

.net - VB.NET DLL "ActiveX component can' t 创建对象”

vb.net - 在 ClosedXML 中对表进行排序,同时保留标题行

android - 如何在ListView中显示SD卡上的文件?

ruby-on-rails - 从 Rails 应用程序(Word、PDF、Excel 等)中搜索附件

java - 如何将 JSON Web 服务索引到 Elasticsearch 中?

arrays - VB.NET 检查现有文件并为该名称分配新的版本号?