2010-11-21 130 views
0

我有4个项目在我的表格......... 拖曳列表框,一个按钮和一个文本框 我有一个列表框'A'与许多项目.. ... 我需要列表框'B'中的项目从列表框'A' 步骤如下.....我喜欢执行...........查找列表框中查找字符串的解决方案

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

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

回答

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 
+0

简洁的答案,正是我会用的。 – 2010-11-24 02:45:06

1

我没有在我面前的是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); 

就像我说的,这是所有我的头顶部,因此代码可能不准确。但希望你明白这个主意。