为什么是";“尺寸”;在C#Winforms中将控件停靠到其父控件时设计器设置的控件的属性?
考虑一个为什么是";“尺寸”;在C#Winforms中将控件停靠到其父控件时设计器设置的控件的属性?,c#,winforms,size,dock,C#,Winforms,Size,Dock,考虑一个选项卡youtPanel。我使用Visual Studio designer将其添加到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); 为什么呢?为
选项卡youtPanel
。我使用Visual Studio designer将其添加到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
,我是否应该同时设置Dock
和Size
?您不需要设置Size
。设置Dock
就足够了
设计器序列化所有值与其默认值不同的属性。由于设置Dock
属性更改Size
,设计器也将其序列化
如果您将Dock
设置为None
,则将在将来使用序列化大小。另外,在运行时设置停靠控件的大小并没有任何效果
为什么设计师要添加这一行
这是控件设计器内部工作的结果。VisualStudio设计器接受未设置为其默认值的每个属性。Size
finally的默认值,未指定。因此,它总是由设计者生成的。请参见指定默认值的示例:只有在设计器中将其设置为false
,才会生成代码
它是否对您的
表格布局面板的视觉最终结果有任何影响?不需要。您不需要设置大小。设置Dock
就足够了。@RezaAghaei-那为什么VS会自动添加它呢?现在,不要再看窗帘后面了,我们看到的是一个向导,而不是一个老人。当你在代码中将Dock属性设置为“无”时,你需要对应该发生的事情进行推理。合乎逻辑的答案是:“那么,它应该使用设计器中设置的大小”。是的,它会。我会说它是初始大小,当您删除停靠样式时它将保持不变。注意:如果您从控件中删除停靠,控件将始终使用手动为其设置的最后一个大小。因此,如果您在运行时设置停靠控件的大小,那么如果您删除停靠,则该大小将用于该控件,否则将使用序列化大小(这是最后一个手动设置的大小)。