我正在尝试使用“搜索”TextBox
和Button
创建一个简单的过滤器,它只是根据用户输入过滤ListView
中的项目。
我使用以下代码使其工作:
If (item.SubItems(1).Text.Contains(txtSearch1.Text.ToLower) = False AndAlso
item.SubItems(1).Text.Contains(txtSearch1.Text.ToUpper) = False) Then
ListViewItems.Items.Remove(item)
End If
代码检查ListViewItem
是否包含用户正在搜索的字符串,如果不包含,则删除项目,只留下与搜索字符串匹配的项目。
问题是,当搜索字符串与ListViewItem
完全匹配时,该项目仍会被删除。
例如:有两项:Item1
,Item2
如果用户搜索“1”,item2
将从列表中删除。
但是,如果用户搜索“item1”,则会删除这两个项目。
我如何让它发挥作用?
答案 0 :(得分:0)
由于您的AndAlso
操作,完全匹配将被删除。它不会与文本的ToLower
和' ToUpper
副本相匹配,因此您的情况永远不会成功。您可以将条件更改为OrElse
,以便在其中任何一个为真时返回true。
<强>更新强>
使用您给出的示例进一步解释,通过搜索1,表现出正确的行为,因为&#34; 1&#34;没有大小写,因此在搜索字符串的大写和小写副本中都是相同的。但是,当包含字母字符时,搜索将失败,因为没有字符串将匹配&#34; item2&#34;和#34; ITEM2&#34;除非您使用Option Compare Text
答案 1 :(得分:0)
我发现(或刚刚开发)解决方案。 我只使用了一个条件:
If item.SubItems(1).Text.ToUpper.Contains(txtSearch1.Text.ToUpper) = False Then
ListViewItems.Items.Remove(item)
End If
问题是因为输入和listviewitem文本的情况,将它们都转换为大写解决了问题。 谢谢!