2012-04-10 76 views

回答

2

它看起来像是隐藏的,因为它是由辅助类控制的。根据the accepted answer to this question,DataGridViewDesigner的Initialize()方法(一个未公开且隐藏很好的辅助类)根据是否存在指定的DataSource来设置DGV的AutoGenerateColumns属性,该属性会覆盖您可能在自己的代码中指定的任何内容。

逻辑是需要一个DataSource来自动生成列;所以,让你尝试将这个属性设置为True而不指定一个属性是无效的。相反,如果您要在设计器中设置数据源,则可能需要DGV为您设置列,除非您还使用Columns属性设置了自己的列。

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

+0

有道理。我只是好奇,并不需要改变它。它只是给我留下了印象。无论如何,我仍然想知道Windows窗体DataGrid和它的ASP.NET计数器部分之间的区别在哪里。我的意思是,如果有任何微小的,好奇的东西阻止这些家伙以同样的方式实施两种控制。感谢您的回答! – 2012-04-10 20:49:13

+0

有意义*除了它默认为true *!所以当他们构建他们的时候,你必须意识到这个(有些)隐藏的属性。 – Tergiver 2012-04-10 21:15:53

+0

是的,事实是默认情况下是真的很奇怪。 我始终认为最好让用户能够在开始时建立自己需要的内容,而不是从他最可能不需要的内容开始,并在他/她得到期望的结果之前删除内容。微软的神秘:)。 – 2012-04-11 07:34:17

相关问题