为什么我的表单在显示时会调整大小?

时间:2013-02-14 12:54:37

标签: c# .net winforms windows-forms-designer

我有一个显示为模态对话框的表单。表单中的表单如下所示:

as in the design view in Visual Studio (宽度= 360,高度= 215)

当它在应用程序中显示时,它比定义的更高和更宽10个像素,在左下边缘留下宽的边距:

as in the running application (宽度= 370,身高= 225)

表单在维度上显式设置为360x215像素,边框样式为FixedDialog,继承自System.Windows.Forms.Form,并且没有代码来操作尺寸(除了自动生成的设计器文件)。如果我将边框样式更改为FixedSingleFixedToolWindow,则会显示正确的尺寸(但我希望其样式为FixedDialog)。

知道造成这种情况的原因是什么?


我已经通过删除表单上的MinimumSize设置来解决此问题。看来,如果它设置为相同的大小(或接近,但我还没有找到阈值)作为Size属性,则会引入边距。由于表单不可调整大小,我不需要MinimumSize设置,因此可以将其删除。

我仍然不明白 为什么 但情况确实如此。

4 个答案:

答案 0 :(得分:9)

首先,您的表单似乎已将AutoScaleMode设置为Font。这会根据使用的字体调整窗体大小。

其次,确保在创建主表单之前有以下几行:

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);  // Not using this - or using true - will cause a different font rendering
...
Application.Run(new Form1());                          // this creates your main form

(通常这是Main

中静态Program.cs方法的一部分

不使用这些行导致使用不同的字体渲染(看看你的截图 - 字母看起来不太相同!)

答案 1 :(得分:2)

我的表格有类似的问题。最后我发现问题在于属性中表单的最大和最小大小。如果您想要一个固定的,不可调整的表单,则必须禁用它们。

希望这有帮助。

答案 2 :(得分:2)

我创建了一个表单,更改了字体并将FormBorderStyle设置为FixedDialog,但我没有遇到任何问题。只需检查一下您在表单加载上的确切设置。

// this needs to be set as joe said is correct.
Application.SetCompatibleTextRenderingDefault(false);

如果您可以提供您在formLoad方法上编写的代码。这样我就可以尝试纠正这个问题。

答案 3 :(得分:1)

为什么不用代码强行解决问题:

protected override void SetClientSizeCore(int x, int y)
{
    base.SetClientSizeCore(360, 215);
}

设置客户区。您需要计算出您想要的值。