当控件在C#Winforms中停靠到其父控件时,为什么设计器设置控件的“Size”属性?

时间:2016-12-15 12:07:48

标签: c# winforms size dock

考虑TabelLayoutPanel。我使用Visual Studio设计器将其添加到Form1,并将Dock属性设置为Fill。即使我使用Dock属性设置了大小,Size属性也设置在Form1.Designer.cs

this.tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel.Size = new System.Drawing.Size(1000, 800);

为什么?为什么设计师添加这条线? Dock属性不够吗?基于此,如果我动态创建此TableLayoutPanel,我应该同时设置DockSize吗?

2 个答案:

答案 0 :(得分:1)

您无需设置Size。设置Dock就足够了。

设计器序列化所有值与其默认值不同的属性。自设置Dock属性更改Size以来,设计师也将其序列化。

如果您将Dock设置为None,将来会使用序列化尺寸。在运行时设置停靠控件的大小也没有任何效果。

答案 1 :(得分:1)

  

为什么设计师会添加这一行?

这是控件设计者内心工作的结果。 Visual Studio设计器将每个未设置为其默认值的属性。最终Size的默认值boils down to the default value of Control.Size,未指定。因此,设计师始终生成。请参阅示例TabStop,其中指定了默认值:仅在设计器中将其设置为false将生成代码。

它会对TableLayoutPanel的视觉效果产生任何影响吗?否。