【发布时间】:2019-09-05 19:00:31
【问题描述】:
我在文本框上设置了搜索功能。当文本输入到框中时,checkedlistbox 可见项被过滤。当您选中其中一个可见框,然后删除搜索文本时,选中的项目将失去其选中。有没有办法解决这个问题?
搜索框:
Private Sub txtSearchBidder_TextChanged(sender As Object, e As EventArgs) Handles txtSearchBidder.TextChanged
If Not String.IsNullOrWhiteSpace(txtSearchBidder.Text) Then
dtBidder.DefaultView.RowFilter = "Bidders LIKE '%" & txtSearchBidder.Text & "%'"
End If
End Sub
检查列表框:
Dim dtBidder as new DataTable
dtBidder.Columns.Add("Bidders")
For Each bidder As String In cmd1.Parameters("@Bidders").Value.ToString().Split(",")
dtBidder.Rows.Add(bidder)
Next
Dim source1 As New BindingSource()
source1.DataSource = dtBidder
chkListBidders.BindingContext = New BindingContext()
chkListBidders.DataSource = source1
chkListBidders.DisplayMember = "Bidders"
chkListBidders.ValueMember = "Bidders"
【问题讨论】:
-
CheckedListBox 不支持数据绑定(这就是它试图隐藏它的原因)。您必须保留一个单独的已检查项目列表,并在过滤后将它们重新应用到列表中。
-
您不应设置
DefaultView的RowFilter。你有一个BindingSource,所以使用它。将其设置为Filter属性。另外,在设计器中添加BindingSource,而不是在代码中。
标签: vb.net search textbox checkedlistbox