BindingList在这里可以有所帮助,因为它可以侦听列表中的更改。
例如,创建一个Person类并覆盖ToString函数以显示排名和名称。
Public Class Person
Property Name As String
Property Rank As Integer
Public Overrides Function ToString() As String
Return Rank & ". " & Name
End Function
End Class
在您的形式,申报表,并添加事件处理程序:
Private people As New BindingList(Of Person)
Public Sub New()
InitializeComponent()
AddHandler people.ListChanged, AddressOf people_ListChanged
people.Add(New Person() With {.Name = "Zach"})
people.Add(New Person() With {.Name = "Barry"})
people.Add(New Person() With {.Name = "John"})
people.Add(New Person() With {.Name = "Nick"})
people.Add(New Person() With {.Name = "Brodie"})
ListBox1.DataSource = people
End Sub
Private Sub people_ListChanged(sender As Object, e As ListChangedEventArgs)
For i As Integer = 0 To people.Count - 1
people(i).Rank = i + 1
Next
End Sub
的ListChanged事件,就像他们在列表开槽更新每个成员的排名,它会自动更新因为DataSource来自人员列表。
简单删除按钮来测试列表,排名在成员列表,它会自动更新列表框自动更新:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If ListBox1.SelectedIndex > -1 Then
people.Remove(ListBox1.SelectedItem)
End If
End Sub
名称被用户inputed,所以我不知道他们会做在这个BOH方法中执行 – Binglee2323
用户使用这个方法的输入并不重要,只是'NamesList1'将会填充来自用户的数据,而不是直接。这只是一个**示例** – SysDragon
用户可以使用以下代码填充数据Private Sub Button2_Click(sender As System.Object,e As System.EventArgs)Handles Button2.Click If TextBox1.Text.Length> 0 Then NamesList1.Add(TextBox1.Text) ListBox1.Items.Add(NamesList1.Count&“。”&TextBox1.Text) End If End Sub –