2013-10-10 40 views

回答

0
Private Function getListItemByName(query As String) As ListViewItem 

For Each lvi As ListViewItem In lst.Items 

    If lvi.Text.Equals(query) Then Return lvi 

    For Each si As ListViewItem.ListViewSubItem In lvi.SubItems 

    If si.Text.Equals(query) Then Return lvi 

    Next 

Next 

Return Nothing 

End Function 

http://www.dreamincode.net/forums/topic/237883-search-for-an-item-in-listview/

+0

你會如何去搜索第一列? –

0

一種方法是使用LINQ:

Public Function SearchLV(lv As ListView, SearchString As String, Colmn As Integer) As List(Of ListViewItem) 
    SearchLV = (From item In lv.Items.OfType(Of ListViewItem)() 
      Where item.SubItems(Colmn).Text = SearchString 
      Select item).ToList 
    If SearchLV.Count = 0 Then 
     SearchLV.Add(New ListViewItem("Your search returned no results")) 
    End If 
End Function 

該函數將返回的匹配特定列的搜索項的列表視圖項的列表。 colmn參數是該列的從零開始的索引。如果找不到任何項目,則列表中的第一項將包含該消息。

檢索項目只是遍歷列表:

Private Sub btnSearch_Click(sender As System.Object, e As System.EventArgs) Handles btnSearch.Click 
    Dim searchstring As String = TextBox1.Text 
    Dim searchlist As List(Of ListViewItem) = Search(ListView1, searchstring, 2) 
    Dim mssage As String = "" 
    For Each item In searchlist 
     For Each subitem As ListViewItem.ListViewSubItem In item.SubItems 
      mssage += subitem.Text + "-" 
     Next 
     mssage = mssage.Substring(0, mssage.Length - 1) + vbNewLine 
    Next 
    MessageBox.Show(mssage) 
End Sub 

如果你想有一個部分字詞搜索變化:

Where item.SubItems(Colmn).Text = SearchString 

到:

Where item.SubItems(Colmn).Text.Contains(SearchString) 
0

這是什麼工作對我來說,它很容易理解並且易於修改。通過這個你可以在列表視圖中搜索指定的行。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click  

    For Each info As ListViewItem In ListView1.Items 

        Dim NameCheck As String = 0 
        Dim SurnameCheck As String = 0 
        Dim IDCheck As String = 0 

        NameCheck = info.Text 
        SurnameCheck = info.SubItems(1).Text 
        IDCheck = info.SubItems(2).Text 

        If NameCheck = TextBox1.Text Then 
         If SurnameCheck = TextBox2.Text Then 
          If IDCheck = TextBox3.Text Then 

           MessageBox.Show("User is already in database!!!", "Invalid Input", MessageBoxButtons.OK, MessageBoxIcon.Warning) 
           GoTo ErrorReturn 'execute difference piece of code 

          End If 
         End If 
        End If 
       Next 
相關問題