9

我有一个显示为模式对话框的表单。表单在设计器中如下所示:

就像在 Visual Studio 中的设计视图中一样 (宽度 = 360,高度 = 215)

当它显示在应用程序中时,它会比定义的高和宽 10 像素,在底部和左侧边缘留下很大的边距:

与正在运行的应用程序一样 (宽度 = 370,高度 = 225)

该表单的尺寸明确设置为 360x215 像素,边框样式为FixedDialog,继承自System.Windows.Forms.Form,并且其中没有用于操作尺寸的代码(自动生成的设计器文件除外)。如果我将边框样式更改为FixedSingleFixedToolWindow显示正确的大小(但我希望它的样式为FixedDialog)。

知道是什么原因造成的吗?


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

我仍然不明白为什么会这样。

4

5 回答 5

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

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

于 2013-04-30T20:31:51.910 回答
2

我创建了一个表单,更改了字体并将其设置FormBorderStyleFixedDialog,但我没有遇到任何问题。只需检查一下您在表单加载时到底设置了什么。

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

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

于 2013-05-24T13:21:58.547 回答
2

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

希望这可以帮助。

于 2013-02-17T07:20:39.533 回答
2

你为什么不暴力破解代码的问题:

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

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

于 2013-02-17T07:27:12.637 回答
0

通过进入表单“Form1.Designer.cs”,我取得了一些成功。然后我确保以下代码的最后一个单词是“Normal”:

    this.WindowState = System.Windows.Forms.FormWindowState.Normal;
于 2021-10-03T12:33:10.183 回答