我尝试在 stackoverflow 上搜索并实现我发现但无济于事的代码。随着文本的更改,我想使用文本框中的当前文本来过滤列表视图项目(因此未关闭匹配的项目将被删除),它只留下列中包含的任何内容。
这是我的意思的一个例子:
搜索:“乔治”
|1|安德森席尔瓦|安德森席尔瓦是...|
|2| 乔治·圣皮埃尔| 乔治是...的冠军
|3| 乔治·索托罗波利斯| Georges Sotoropolis是轻量级拳手|
通过此搜索,只会返回第 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 中输入内容,我就看不到列表视图项目。滚动条变小/变大取决于是否由于执行搜索而有更多/更少的项目。我的问题似乎他们不可见
谢谢!