如何将自定义类的通用列表绑定到datagridview并仅在VB.NET中显示特定属性?

时间:2013-08-01 07:23:31

标签: .net vb.net datagridview

我想要一种以我自己完全控制的自定义方式在datagridview中显示自定义类的方法。例如,如果我现在只是将List绑定到datagridview,则将创建每个公共属性的列。即使我使用DataGridViewTextBoxColumn的DataPropertyName属性,也会创建自定义类的每个附加属性的附加列。

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

我想我记得有可能实现一些有助于精确指定类在datagridview控件中如何表示的接口。

有人能指出我最好,最有效的解决方案吗?

2 个答案:

答案 0 :(得分:3)

DataGridView具有AutoGenerateColumns属性,默认情况下为True。将其设置为False,并在DataGridView -> Columns代码

下指定所需的列

答案 1 :(得分:3)

您可以使用Browsable attribute

如果将以下类的List绑定到DataGridView

Class Person

    Public Property Name As String

    Public Property Department As String

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

End Class

只会创建NameDepartment列。

快速举例:

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

enter image description here