【问题标题】:Find a part of text in a listbox在列表框中查找部分文本
【发布时间】:2013-01-11 09:37:46
【问题描述】:

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

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

  1. 数据1
  2. 数据2

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

如何编码?

【问题讨论】:

  • 是的,有办法。你试过什么?你有什么代码可以部分工作。此外,在句子开头使用大写字母会使文本更易于阅读。
  • 你是新发帖人,所以我花时间让你的问题可读。请您在以后的帖子中花时间这样做,它显示了最低限度的努力,并鼓励观众至少阅读您的问题。
  • 现在人们可能会真正阅读您的问题,什么会让他们认为值得回答?您需要投入至少尽可能多的时间来询问,因为您期望答案会得到他们的回应。 mattgemmell.com/2008/12/08/what-have-you-tried
  • 由于您的问题省略了它所引用的一些信息,并且没有显示您的任何研究,因此它有被关闭的危险,因为它不是一个真正的问题。 stackoverflow.com/questions/how-to-ask

标签: vb.net


【解决方案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
【解决方案2】:

您必须知道要搜索的字词。例如,包含搜索文本中任何字母的文本、完整的单词、未搜索符号等。 您必须“手动”进行,没有搜索相似文本的功能。

例如:

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

【讨论】:

  • 您检查文本框 TextBox1 是否在搜索框中包含任何 Chars。这不是问题所要求的。
  • @Jodrell 事实上,这可能是一个答案。该问题要求一种搜索部分文本的方法。它只是一个例子。正如我在答案中解释的那样,他可以通过更多的努力使用这个想法来使用他自己的参数来做到这一点。
  • @Jodrell,感谢大家的帮助。对不起,我出了事故,我问了同样的问题,对不起,非常感谢 Jodrell 编辑我的问题
【解决方案3】:

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

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

Match starting of a string in listbox OR Match some part of a string in listbox items

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多