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

adr*_*nks 9 .net c# windows-forms-designer winforms

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

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

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

在正在运行的应用程序中 (宽= 370,身高= 225)

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

知道是什么导致了这个吗?


我通过删除MinimumSize表单上的设置来修复此问题.似乎如果将其设置为相同的大小(或接近,但我还没有找到阈值)作为Size属性,则引入边距.由于表单不可调整大小,我不需要该MinimumSize集合,因此可以将其删除.

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

joe*_*joe 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
Run Code Online (Sandbox Code Playgroud)

(通常这是静态Main方法的一部分Program.cs)

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


小智 2

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

希望这可以帮助。