为什么DataGridView.AutoGenerateColumns应用了Browsable(false)属性?

时间:2012-04-10 20:27:35

标签: c# winforms datagridview

我只是好奇为什么Windows DataGridView控件从设计器中隐藏了它的AutoGenerateColumns属性?

真的无法想出这个问题的一些好答案。 任何人吗?

1 个答案:

答案 0 :(得分:2)

看起来它是隐藏的,因为它是由助手类控制的。根据{{​​3}},DataGridViewDesigner的Initialize()方法(一个未记录且非常隐蔽的帮助器类)根据是否指定了DataSource来设置DGV的AutoGenerateColumns属性,该属性会覆盖您在自己指定的任何内容。代码。

逻辑是需要DataSource才能自动生成列;因此,如果没有指定一个属性,则尝试将此属性设置为True将无效。相反,如果您在设计器中设置DataSource,您可能希望DGV为您设置列,除非您还使用Columns属性设置了自己的列。

您可以通过在派生类中重写此属性并指定[Browseable(true)]属性来公开此属性。但是,正如上面的问题所示,无论如何,您在构造函数或InitializeComponent()方法中设置的任何内容都将被DGVDesigner覆盖。