2009-12-30 52 views
0

我是在.net中開發UI的新手。基本上我使用的是一個列表視圖,我想在列表視圖中搜索項目。 假設列表中包含這樣的:如何在沒有發現字符串的情況下在listview中搜索所有項目

斯諾名稱
1邁克爾·傑克遜
約翰二米切爾

如果我搜索usign應該顯示所有符合條件的項目中第二個或第三個任期。 我試過使用.FindString,但它只是搜索第一項。這不是我想要的。任何人都可以告訴我一個更好的方式來做我想做的事嗎?

回答

1

只要重複調用ListBox.FindString(),直到找到它們全部。例如:

Public Class Form1 
    Public Sub New() 
     InitializeComponent() 
     ListBox1.SelectionMode = SelectionMode.MultiExtended 
    End Sub 

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged 
     ListBox1.BeginUpdate() 
     ListBox1.SelectedIndices.Clear() 
     If TextBox1.Text.Length > 0 Then 
      Dim index As Integer = -1 
      Do 
       dim found As integer = ListBox1.FindString(TextBox1.Text, index) 
       If found <= index Then Exit Do 
       ListBox1.SelectedIndices.Add(found) 
       index = found 
      Loop 
     End If 
     ListBox1.EndUpdate() 
    End Sub 
End Class 

如果你需要找到列表框項目字符串的任何部分匹配,那麼你可以搜索這樣的項目:

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged 
    ListBox1.BeginUpdate() 
    ListBox1.SelectedIndices.Clear() 
    If TextBox1.Text.Length > 0 Then 
     For index As Integer = 0 To ListBox1.Items.Count - 1 
      Dim item As String = ListBox1.Items(index).ToString() 
      If item.IndexOf(TextBox1.Text, StringComparison.CurrentCultureIgnoreCase) >= 0 Then 
       ListBox1.SelectedIndices.Add(index) 
      End If 
     Next 
    End If 
    ListBox1.EndUpdate() 
End Sub 
相關問題