📅  最后修改于: 2023-12-03 15:38:20.518000             🧑  作者: Mango
在 VB.NET 中,我们经常会使用 ListBox 控件来展示一系列的数据。但当 ListBox 中的数据较多时,用户很难找到自己需要的数据。为了解决这一问题,我们可以提供一个搜索功能,在输入关键字后,搜索符合条件的数据并显示在 ListBox 中。
在设计 ListBox 控件时,我们需要同时添加一个 TextBox 控件和一个 Button 控件,用户在 TextBox 中输入关键字,点击 Button 后,ListBox 中只会显示符合条件的数据。
在代码中,我们也需要声明一个用于存储 ListBox 中所有数据的 List 集合,这样方便我们在搜索时遍历所有数据。
Dim dataList As New List(Of String)
在程序中,我们需要提供一个添加数据的方法。我们可以通过点击另一个 Button,或在窗体加载时从文件或数据库中读取数据并添加到 ListBox 中。
Private Sub AddDataToListBox(data As String)
ListBox1.Items.Add(data)
dataList.Add(data)
End Sub
我们可以监听 TextBox 的 TextChanged 事件,当用户输入关键字时,便触发事件。我们需要使用 LINQ 遍历 List 中的所有数据,过滤出符合条件的数据,并重新添加到 ListBox 中。
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
Dim keyword As String = TextBox1.Text.ToLower()
Dim query =
From data In dataList
Where data.ToLower().Contains(keyword)
Select data
ListBox1.DataSource = query.ToList()
End Sub
在代码中,我们使用了 ToLower() 方法将输入的关键字转换为小写,这样在搜索时就不会受到大小写的影响。我们还使用了 Contains 方法过滤出包含关键字的数据,并用 ToList 方法将结果转换为 List 集合再重新赋值给 ListBox。
Public Class Form1
Dim dataList As New List(Of String)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'Add data to ListBox1
AddDataToListBox("Apple")
AddDataToListBox("Banana")
AddDataToListBox("Orange")
AddDataToListBox("Pineapple")
End Sub
Private Sub AddDataToListBox(data As String)
ListBox1.Items.Add(data)
dataList.Add(data)
End Sub
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
Dim keyword As String = TextBox1.Text.ToLower()
Dim query =
From data In dataList
Where data.ToLower().Contains(keyword)
Select data
ListBox1.DataSource = query.ToList()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'Clear ListBox1
ListBox1.DataSource = Nothing
ListBox1.Items.Clear()
'Add data to ListBox1
AddDataToListBox("Apple")
AddDataToListBox("Banana")
AddDataToListBox("Orange")
AddDataToListBox("Pineapple")
End Sub
End Class
这段代码演示了如何在 Windows 窗体应用程序中使用 ListBox 控件进行搜索,如果您想看到更详细的介绍和示例代码,请移步我的 GitHub。