Vb.net DataGridView数据源集合列

Vb.net DataGridView数据源集合列,vb.net,Vb.net,我有以下课程: Imports Cognex.InSight Imports Newtonsoft.Json Public Class VariableViewModel Public Enum VariableTypes EditRegion Enumerated Input Momentary Toggle End Enum Public Property CellLocation

我有以下课程:

Imports Cognex.InSight
Imports Newtonsoft.Json

Public Class VariableViewModel

    Public Enum VariableTypes
        EditRegion
        Enumerated
        Input
        Momentary
        Toggle
    End Enum

    Public Property CellLocation As CvsCellLocation

    Public Property Name As String

    Public Property Values As Dictionary(Of String, String)

    Public Property VariableType As VariableTypes

    Public Function ToJson() As String
        Return JsonConvert.SerializeObject(New With {Key Name, CellLocation, Values, VariableType})
    End Function

End Class
该类正在被序列化,然后最终反序列化并存储到列表中。此列表最终使用BindingSource绑定到DataGridView,如下所示:

' Private ReadOnly _variables As List(Of VariableViewModel)
Dim source As BindingSource = New BindingSource() With {
    .DataSource = _variables
}
DataGridViewVariables.DataSource = source
我遇到的问题是DataGridView中的列名与类上的属性不是一对一的匹配。另外,我想在DataGridView的末尾添加两个按钮列


如果不清除列,然后绑定DataGridView,然后手动设置按钮列,是否有方法将列名与类属性名匹配?

DataGridViewColumn的
DataPropertyName
属性决定了它绑定到的数据源的哪个列/属性。您可以自己在设计器或代码中向网格添加列,并为每列设置该属性。在设置
数据源之前,您将
AutoGenerateColumns
设置为
False
,然后只会按指定绑定现有列,而不会创建新列。

DataGridViewColumn的
DataPropertyName
属性决定了它绑定到的数据源的哪个列/属性。您可以自己在设计器或代码中向网格添加列,并为每列设置该属性。在设置
DataSource
之前,请将
AutoGenerateColumns
设置为
False
,然后仅按指定绑定现有列,不会创建新列。

而您应该使用我在下面提供的答案,值得注意的是,您可以使用其
DisplayIndex
独立控制网格中显示的顺序列。如果确实希望使用默认名称和后续按钮列显示所有数据源属性,则可以在设计时仅添加按钮列,设置
DataSource
以在运行时自动创建其余列,然后设置
DisplayIndex
属性以最后显示按钮列。虽然您应该使用我在下面提供的答案,值得注意的是,您可以使用其
DisplayIndex
独立控制网格中显示的顺序列。如果确实希望使用默认名称和后续按钮列显示所有数据源属性,则可以在设计时仅添加按钮列,设置
数据源
以在运行时自动创建其余列,然后设置
显示索引
属性以最后显示按钮列。