65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.55/5 (9投票s)

2008年3月16日

CPOL

2分钟阅读

viewsIcon

135450

downloadIcon

1613

使用几行代码,在 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 会自动生成与绑定类中的属性数量一样多的列(在我们的例子中,两列,NameLastName)。显然,如果您编写像上面所示的代码,则不需要在设计时设置任何数据绑定属性。我希望这篇文章对您有所帮助,因为我在互联网上只找到了关于集合数据绑定到 DataGridView 的文章,其中数据不可编辑,或者解决方案仅在 C# 中可用。

© . All rights reserved.