Vb.net 在列表框中查找文本的一部分

Vb.net 在列表框中查找文本的一部分,vb.net,Vb.net,我得到了一些代码来查找列表框中包含的文本,但这不是我需要的。当用户在文本框(即搜索字段)中键入时,他们必须键入准确的文本,而不是文本的一部分。有没有办法在列表框中找到值/文本的一部分 例如,我有一个包含以下项目的列表框: 数据1 数据2 当我在搜索字段(textbox/richtextbox)中键入(2)时,我希望选择包含“2”值的第二项 如何编写此代码?您可以使用IndexOf Dim hits = From item In listBox1.Items.Cast(Of String)()

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

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

  • 数据1
  • 数据2
  • 当我在搜索字段(textbox/richtextbox)中键入(2)时,我希望选择包含“2”值的第二项


    如何编写此代码?

    您可以使用
    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一起工作。

    您必须知道搜索所需的术语。例如,包含搜索文本中任何字母的文本、完整单词、非搜索符号等。 你必须“手动”完成,没有搜索类似文本的功能

    例如:

    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
    

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

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


    是的,有办法。你试过什么?你有什么代码可以部分工作。此外,在你的句子开头使用大写字母可以使文本更容易阅读。你是一个新的海报,所以,我花时间让你的问题更具可读性。请你在以后的帖子中花点时间来做这件事,它显示了最低程度的努力,并鼓励观众至少阅读你的问题。现在人们可能真的阅读了你的问题,什么会让他们认为它值得回答?你需要在提问上投入的时间至少与你期望答案在他们的回答中所占的时间一样多。由于你的问题遗漏了它所提到的一些信息,并且没有显示出你这方面的任何研究,所以它有被关闭的危险,因为它不是一个真正的问题。检查文本框
    TextBox1
    是否包含搜索框中的任何
    字符。“这不是问题要问的。”乔德雷尔事实上,这可能是一个答案。这个问题需要一种搜索文本部分的方法。这只是一个例子。如我在回答中所解释的那样,只要他再努力,他就可以用自己的参数来实现这个想法。@Jodrell,谢谢你们的帮助。很抱歉,我犯了意外,我问了同样的问题,很抱歉,非常感谢Jodrell编辑我的问题。我认为我们不应该将答案限制在遗留版本,除非问题明确要求+1.