在列表框中找到查找字符串的解决方案

时间:2010-11-21 16:57:26

标签: vb.net listbox

我的表格上有4个项目......... 拖动列表框,一个按钮和一个文本框 我有一个包含很多项目的列表框'A'..... 我需要列表框'A'中列表框'B'中的项目 步骤如下.....我喜欢表演............

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

我需要一个帮助,其中可以在列表框'B'中的项目获取列表框'A' 即开始字符串或我们在文本框中输入的字符。 请尽量解决我..........

2 个答案:

答案 0 :(得分:3)

我不太确定我会效仿。使用文本框'更改事件将是一个很好的触发器而不是按钮。只需迭代列表项并检查与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

答案 1 :(得分:1)

我面前没有IDE,自从我完成WinForms开发以来已经有一段时间了,所以我可能没有确切的事件名称或其他内容,但是你明白了。这也意味着我的代码将在C#中,因为我对它更熟悉,但你应该能够找到VB等价物。

您首先要在文本框中绑定到正确的事件。可能是KeyPress或KeyUp事件?还是TextChanged?您希望在文本框中随时触发文本更改。在这种情况下,您将遍历列表框A中的项目,并将它们的值与文本框中的文本进行比较。如果有.StartsWith()或某种性质的话,基本字符串比较就是所需要的,否则.Substring()的一些基本用法就可以了(基于文本框中字符串的长度)。< / p>

这个循环很可能是:

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);

就像我说的那样,这一切都不在我的脑海中,所以代码可能并不准确。但希望你明白了。