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

How to make a listbox automatically update when the source (list) is changed

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

现在我可以做到,但是以一种非常丑陋的方式。我所做的是在我修改列表的所有地方删除和添加数据源:

例如:

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

这行得通,但是有什么方法可以告诉列表框在不重置数据源的情况下再次检查数据源吗?

编辑: 我如何筛选:

在 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

您需要绑定一个"BindingList(of 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