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