-2

我得到了一些代码来查找列表框中包含的文本,但这不是我需要的。当用户在文本框(即搜索字段)中输入时,他们必须输入准确的文本,而不是文本的一部分。有没有办法在列表框中找到值/文本的一部分?

例如,我有一个包含这些项目的列表框:

  1. 数据1
  2. 数据2

当我在搜索字段(文本框/富文本框)中键入 (2) 时,我希望选择包含“2”值的第二个项目。

我该如何编码?

4

3 回答 3

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。

于 2013-01-11T09:57:34.363 回答
0

您没有提到是否要在列表框中保留其他项目(与搜索查询不匹配)。

如果您只想将项目保留在匹配或包含您的搜索查询的列表框中,那么您可以在 stackoverflow 上查看此答案。

匹配列表框中字符串的开头或匹配列表框项目中字符串的某些部分

于 2014-08-11T19:28:29.470 回答
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
于 2013-01-11T09:58:09.417 回答