我已经获得了一些代码来查找列表框中包含的文本但是,它不是我需要的。当用户键入文本框(即搜索字段)时,他们必须键入确切的文本,而不是文本的一部分。有没有办法在列表框中找到值/文本的一部分?
例如,我有一个包含这些项目的列表框:
- DATA1
- DATA2
醇>
当我在搜索字段(textbox / richtextbox)中输入(2)时,我希望选择包含“2”值的第二项。
我该如何编码?
答案 0 :(得分:1)
您可以使用IndexOf
Dim hits = From item In listBox1.Items.Cast(Of String)()
Where item.IndexOf(txtSearch.Text, StringComparison.OrdinalIgnoreCase) >= 0
If hits.Any Then
listBox1.SelectedItem = hits.First()
End If
如果您不想忽略此案例,请使用String.Contains
代替String.IndexOf
。
请注意,上面是一个linq查询,所以它不能以这种方式与.NET 2一起使用。
答案 1 :(得分:0)
您必须知道搜索所需的字词。例如,包含搜索文本中的任何字母的文本,完整的单词,不搜索符号等。 你必须“手动”执行,没有搜索类似文本的功能。
例如:
Private Sub SearchBox_TextChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles SearchBox.TextChanged
Dim iFound As Integer = -1
For i As Integer = 0 To SearchBox.TextLength - 1
If TextBox1.Text.Contains(SearchBox.Text(i)) Then
iFound = TextBox1.Text.IndexOf(SearchBox.Text(i))
Exit For
End If
Next
If iFound >= 0 Then
TextBox1.Select(iFound, 1)
End If
End Sub
答案 2 :(得分:0)
您没有提及要在列表框中保留其他项目(与搜索查询不匹配)。
如果您只想保留列表框中与搜索查询匹配或包含搜索查询的项目,则可以在stackoverflow上查看此答案。
Match starting of a string in listbox OR Match some part of a string in listbox items