如何在更改源(列表)时自动更新列表框

时间:2016-06-30 09:27:25

标签: vb.net winforms listbox datasource

所以我有一个列表框,其中列表作为数据源。我想要的是当我从列表中添加和删除项目时,列表框会自动更新。

现在我能够以一种非常丑陋的方式做到这一点。我所做的是删除并在我修改列表的所有地方添加数据源:

例如:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    formaciones.Add(New ForDias(Formacion, NumericUpDown1.Value))
    ListBox2.DataSource = Nothing
    ListBox2.DataSource = formaciones
End Sub

这有效,但有没有办法告诉Listbox再次检查数据源而不重置它?

修改 我如何过滤:

在textBox文本已更改事件:

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    ListBox2.DataSource = New BindingList(Of Object)((formaciones.Where(Function(i As ForDias) i.Formacion.ToString().Contains(TextBox1.Text))).ToList())
End Sub

1 个答案:

答案 0 :(得分:1)

您需要绑定“BindingList(ForDias)”

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim formaciones As New System.ComponentModel.BindingList(Of ForDias)
formaciones.Add(New ForDias(Formacion, NumericUpDown1.Value))
ListBox2.DataSource = Nothing
ListBox2.DataSource = formaciones
End Sub