使用 Visual Basic 2008 代码将泛型集合绑定到 DataGridView






2.55/5 (9投票s)
使用几行代码,在 VB 2008 中将泛型集合绑定到 DataGridView。
引言
我需要在用 Visual Basic 2008 编写的应用程序中,将一个 DataGridView
绑定到一个自定义类的泛型集合。目标是,无论从 DataGridView
中编辑、添加或删除项目,集合都会更新,反之亦然。
Using the Code
.NET Framework 暴露了一个非常有用的对象,叫做 BindingSource
。这也可以在设计时使用,但在这种特定情况下,不允许绑定未定义为类的对象。在我的情况下,我需要在模块内部实例化一个集合,因此这是一种在设计时使用 BindingSource
无法实现的情况,但可以通过编写几行代码来实现。假设我们有典型的学习示例类,即 Person
类
Public Class Person
Private _lastName As String
Private _name As String
Public Property LastName() As String
Get
Return _lastName
End Get
Set(ByVal value As String)
_lastName = value
End Set
End Property
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
Public Sub New()
End Sub
Public Sub New(ByVal name As String, ByVal lastName As String)
_name = name
_lastName = lastName
End Sub
End Class
现在,假设我们需要实例化一个 Person
对象集合。在我的情况下,这发生在 Module
内部,但在示例中,它可以发生在控制台应用程序的 Sub Main
内部。这是代码
Dim People As New List(Of Person)
下一步是实例化一个 BindingSource
对象,然后将它的 DataSource
属性分配给上面的集合
Dim PeopleBindingSource As New BindingSource
PeopleBindingSource.DataSource = People
在包含 DataGridView
的窗体中,像这样分配它的 DataSource
属性
PeopleDataGridView.DataSource = PeopleBindingSource
关注点
这种数据绑定允许同时更新 DataGridView
和绑定的集合,无论您编辑哪个对象。此外,在这种特定情况下,如果 DataGridView
控件的 AutoGenerateColumns
属性设置为 True
,.NET Framework 会自动生成与绑定类中的属性数量一样多的列(在我们的例子中,两列,Name
和 LastName
)。显然,如果您编写像上面所示的代码,则不需要在设计时设置任何数据绑定属性。我希望这篇文章对您有所帮助,因为我在互联网上只找到了关于集合数据绑定到 DataGridView
的文章,其中数据不可编辑,或者解决方案仅在 C# 中可用。