[英]Filter a listview in vb.net
當前,我有一個程序可以寫入具有以下名稱的列的ListView
: number
, time
,description。 這個列表視圖沒有任何數據綁定,我基本上只是使用代碼來寫它。
我想要做的是擁有一個TextBox
,如果用戶想要查看特定的數字(即2),則當他們在文本框中鍵入內容時,我希望listview僅顯示number = 2的數據。文本框,我希望列表視圖顯示所有數據。
我正在互聯網上四處張望,似乎沒有找到過濾方法。 它甚至存在嗎?如果是這樣,我將如何實施它。
感謝所有幫助。
雖然我建議將DataGridView
與DataSource
一起使用,但是在需要使用ListView
情況下,可以使用此解決方案。
您可以通過以下方式過濾列表視圖:
Load
,將每個項目存儲在該成員字段中 TextBox
和Button
的形式和處理Click
的事件Button
的處理程序,並首次明確所有項目ListView
然后與標准相匹配的備份存儲的每個項目。 備份項目的成員字段
Private ItemsBackup As New List(Of ListViewItem)
在加載項后填寫備用ListView
的形式Load
事件
For Each item As ListViewItem In ListView1.Items
ItemsBackup.Add(item)
Next
過濾器代碼
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.ListView1.BeginUpdate()
Me.ListView1.Items.Clear()
For Each item As ListViewItem In ItemsBackup
If (item.Text = Me.TextBox1.Text Or String.IsNullOrEmpty(Me.TextBox1.Text)) Then
Me.ListView1.Items.Add(item)
End If
Next
Me.ListView1.EndUpdate()
End Sub
您還可以將上述代碼用於TextBox
TextChanged
事件。
這是一個測試數據:
For i = 1 To 30
Dim item As New ListViewItem(i.ToString())
item.SubItems.Add(DateTime.Now.AddHours(i))
Me.ListView1.Items.Add(item)
Next
沒有大量的工作,普通的.NET ListView
就無法做到這一點。 因此,您可以使用ObjectListView
一個圍繞標准.NET ListView的開源包裝程序-它已經為您完成了所有工作。
它具有內置的過濾功能 (並突出顯示)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.