我遇到这种情况:
我有一个List或一个数组(没有判断哪个更适合我的目的,但没关系)某些对象(例如人员列表)。在我的表单中有一个DataGridView,我想看到所有人及其属性。可以在运行时编辑Person的属性,我希望在DataGridView中立即看到这些更改。我已经使用了BindingSource
:
Dim _persons As New List(Of Person)
Dim persons As BindingSource = New BindingSource()
persons.DataSource = _persons
myGridView.DataSource = persons
现在,当我通过BindingSource(人员)添加/删除某人时,这非常有效。这种变化我可以立即看到。但是,如果我想编辑一个人怎么办?让我们上课:
Public Class Person
Public Property FirstName As Integer
Public Property SecondName As String
Public Property Address As String
End Class
如果我想编辑名字,我可以这样做:
_persons(1).FirstName = "John"
但这是直接通过列表而不是通过BindingSource,所以这个更改不会在DataGridView中生效。有没有办法通过BindingSource来实现这一点,以便在DataGridView中影响这个编辑?
我很抱歉,这是我第一次使用BindingSource,所以这可能是一个愚蠢的问题。谢谢你们。
答案 0 :(得分:2)
您应该直接影响BindingSource
(而不是您用来创建BindingSource的List
),即:
DirectCast(persons(1), Person).FirstName = "John"