1

我只是好奇为什么 Windows DataGridView 控件对设计器隐藏其 AutoGenerateColumns 属性?

这个问题实在想不出好答案。任何人?

4

1 回答 1

2

看起来它是隐藏的,因为它是由辅助类控制的。根据这个问题的公认答案, DataGridViewDesigner 的 Initialize() 方法(一个未记录且非常隐藏的帮助器类)根据是否指定了 DataSource 来设置 DGV 的 AutoGenerateColumns 属性,它会覆盖您可能在您的自己的代码。

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

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

于 2012-04-10T20:41:41.500 回答