2

我想要一种以我可以完全控制的自定义方式在 datagridview 中呈现自定义类的方法。例如,如果我现在简单地将 List 绑定到 datagridview,将为每个公共属性创建一个列。即使我利用 DataGridViewTextBoxColumn 的 DataPropertyName 属性,也会为自定义类的每个附加属性创建附加列。

我知道我可以自己简单地填充 datagridview,但即使是 VB.NET 初学者,我也觉得这不是一个好的解决方案。是吗?

我想我记得可以实现一些接口,以帮助准确指定类在 datagridview 控件中的表示方式。

有人可以指出我最好和最有效的解决方案吗?

4

2 回答 2

3

DataGridView 具有AutoGenerateColumns默认为True. 将其设置为False并指定您想要在DataGridView -> Columns标签下的列

于 2013-08-01T07:25:34.980 回答
3

您可以使用Browsable属性

如果您将以下类的列表绑定到DataGridView

Class Person

    Public Property Name As String

    Public Property Department As String

    <System.ComponentModel.Browsable(False)>
    Public Property SomethingInternal As String

End Class

只会创建NameandDepartment列。

快速示例:

Using f As New Form
    Dim g = New DataGridView With {
        .Dock = DockStyle.Fill,
        .DataSource = { New Person With 
                        { 
                            .Name = "Foobar", 
                            .Department = "BarFoo", 
                            .SomethingInternal = "Don't show this"
                        }}}
    f.Controls.Add(g)
    f.ShowDialog()
End Using

在此处输入图像描述

于 2013-08-01T08:30:21.547 回答