【问题标题】:finding a solution for find string in listbox寻找在列表框中查找字符串的解决方案
【发布时间】:2010-11-21 16:57:25
【问题描述】:

我的表格上有 4 项...... 两个列表框,一个按钮和一个文本框 我有一个包含许多项目的列表框“A”..... 我需要列表框“A”中的列表框“B”中的项目 步骤如下......我喜欢执行............

1) 在文本框中输入单词或字符 2)按一个按钮 3)列表出现在列表框'B'中......这是我们在文本框中写入的列表框'A'中的字符或字符串开始(用于匹配)

我需要帮助,其中可以在列表框“B”中的项目正在获取列表框“A” 即 起始字符串 或我们在文本框中输入的字符。 请尝试解决我........

【问题讨论】:

    标签: vb.net listbox


    【解决方案1】:

    不太确定我是否遵循。使用文本框的 Changed 事件将是一个很好的触发器,而不是按钮。只需迭代列表项并检查是否与 String.StartsWith 匹配。例如:

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        ListBox2.Items.Clear()
        If TextBox1.Text.Length > 0 Then
            For index As Integer = 0 To ListBox1.Items.Count - 1
                Dim txt = ListBox1.Items(index).ToString()
                If txt.StartsWith(TextBox1.Text, StringComparison.CurrentCultureIgnoreCase) Then
                    ListBox2.Items.Add(txt)
                End If
            Next
        End If
    End Sub
    

    【讨论】:

    • 简洁的答案,正是我会使用的。
    【解决方案2】:

    我面前没有 IDE,而且我已经有一段时间没有进行 WinForms 开发了,所以我可能没有确切的事件名称或其他东西,但你明白了。这也意味着我的代码将使用 C#,因为我对此更熟悉,但您应该能够找到 VB 等价物。

    您需要先绑定到文本框上的正确事件。也许是 KeyPress 或 KeyUp 事件?还是TextChanged?您想要一个在文本框中的文本更改时触发。在这种情况下,您将遍历列表框 A 中的项目并将它们的值与文本框中的文本进行比较。如果有.StartsWith() 或类似性质的东西,则只需要基本的字符串比较,否则.Substring() 的一些基本用法就可以了(基于文本框中字符串的长度)。

    循环可能是这样的:

    listboxA.Items.ForEach(i =>
        {if (i.StartsWith(textboxA.Text)) listboxB.Items.Add(i);});
    

    或者……

    foreach (var i in listboxA.Items)
        if (i.StartsWith(textBoxA.Text))
            listboxB.Items.Add(i);
    

    就像我说的,这完全是我的想法,所以代码可能不准确。但希望你能明白。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-25
      • 2021-05-12
      • 2021-08-26
      • 2019-01-16
      • 1970-01-01
      • 2023-01-23
      • 2014-07-20
      相关资源
      最近更新 更多