Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么是";“尺寸”;在C#Winforms中将控件停靠到其父控件时设计器设置的控件的属性?_C#_Winforms_Size_Dock - Fatal编程技术网

为什么是";“尺寸”;在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属性设置为“无”时,你需要对应该发生的事情进行推理。合乎逻辑的答案是:“那么,它应该使用设计器中设置的大小”。是的,它会。我会说它是初始大小,当您删除停靠样式时它将保持不变。注意:如果您从控件中删除停靠,控件将始终使用手动为其设置的最后一个大小。因此,如果您在运行时设置停靠控件的大小,那么如果您删除停靠,则该大小将用于该控件,否则将使用序列化大小(这是最后一个手动设置的大小)。