【发布时间】:2012-04-10 20:27:35
【问题描述】:
我只是好奇为什么 Windows DataGridView 控件对设计器隐藏其 AutoGenerateColumns 属性?
这个问题实在想不出好答案。 有人吗?
【问题讨论】:
标签: c# winforms datagridview
我只是好奇为什么 Windows DataGridView 控件对设计器隐藏其 AutoGenerateColumns 属性?
这个问题实在想不出好答案。 有人吗?
【问题讨论】:
标签: c# winforms datagridview
它看起来像被隐藏了,因为它是由一个辅助类控制的。根据the accepted answer to this question,DataGridViewDesigner 的 Initialize() 方法(一个未记录且非常隐藏的帮助器类)根据是否指定了 DataSource 来设置 DGV 的 AutoGenerateColumns 属性,这会覆盖您可能在自己的代码中指定的任何内容。
逻辑是需要 DataSource 才能自动生成列;因此,让您在未指定的情况下尝试将此属性设置为 True 是无效的。相反,如果您在设计器中设置 DataSource,您可能希望 DGV 为您设置列,除非您还使用 Columns 属性设置了自己的列。
您可以通过在派生类中覆盖它并指定[Browseable(true)] 属性来公开此属性。但是,正如上面的问题所示,您在构造函数或 InitializeComponent() 方法中设置的任何内容都将被 DGVDesigner 覆盖。
【讨论】: