C# 在设计器中用Size属性改变了窗体大小为何运行时还是原来大小
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 在设计器中用Size属性改变了窗体大小为何运行时还是原来大小相关的知识,希望对你有一定的参考价值。
你设置Size的地方不对,或者其它代码也定义了Size请在后台代码处搜索
Size
Width
Height
看那些代码改变了Size 参考技术A
设置方法:选择设置成提示的100%,然后设置在VS设置C#winform的size尺寸就可以了,初始设置的size尺寸大小与运行的winform尺寸是一样大小。
为啥在 C# Winforms 中控件停靠到其父级时,设计器设置了控件的“大小”属性?
【中文标题】为啥在 C# Winforms 中控件停靠到其父级时,设计器设置了控件的“大小”属性?【英文标题】:Why is the "Size" property of a control set by the designer when the control is docked to its parent in C# Winforms?为什么在 C# Winforms 中控件停靠到其父级时,设计器设置了控件的“大小”属性? 【发布时间】:2016-12-15 12:07:47 【问题描述】:考虑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
,我应该同时设置Dock
和Size
吗?
【问题讨论】:
您不需要设置Size
。设置Dock
就足够了。
@RezaAghaei - 那么为什么 VS 会自动添加它?
来吧,别再往窗帘后面看了,我们是来找巫师的,不是老头子
您需要推理在代码中将 Dock 属性设置回 None 时会发生什么。一个合乎逻辑的答案是:“好吧,它应该使用设计器中设置的尺寸”。对,会的。
我会说它是初始大小,当您删除停靠样式时它会保留。
【参考方案1】:
您无需设置Size
。设置Dock
就足够了。
设计器将所有值与其默认值不同的属性序列化。由于设置Dock
属性改变了Size
,设计者也对其进行序列化。
如果您将Dock
设置为None
,以后将使用序列化大小。在运行时设置停靠控件的大小也没有任何效果。
【讨论】:
注意:如果您从控件中移除扩展坞,控件将始终使用手动为其设置的最后一个尺寸。因此,如果您在运行时为停靠控件设置大小,则在移除停靠时将使用该大小,否则将使用序列化大小(这是最后一次手动设置的大小)。【参考方案2】:设计师为什么要加这条线?
这是控件设计者内部工作的结果。 Visual Studio 设计器采用未设置为其默认值的每个属性。 Size
最终为 boils down to the default value of Control.Size
的默认值,未指定。因此,它总是由设计者生成。参见 TabStop
示例,其中指定了默认值:只有在设计器中将其设置为 false
才会生成代码。
它对您的TableLayoutPanel
的视觉最终结果有任何影响吗?没有。
【讨论】:
以上是关于C# 在设计器中用Size属性改变了窗体大小为何运行时还是原来大小的主要内容,如果未能解决你的问题,请参考以下文章