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,我应该同时设置DockSize吗?

【问题讨论】:

您不需要设置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属性改变了窗体大小为何运行时还是原来大小的主要内容,如果未能解决你的问题,请参考以下文章

如何设置C#窗体大小不能改变

c#用vs2010设计界面时怎么让设计的窗体最大化

C#控件的位置和大小随窗体大小的变化而变化

C#编程,分辨率改变后,怎么让窗体的大小,窗体上的控件大小,位置,按比例改变?

vs2008,c#,我想修改窗口控件的位置和大小。

如何设置禁止改变“C# WINFORM”窗体大小?