我有一个显示为模态对话框的表单。表单中的表单如下所示:
(宽度= 360,高度= 215)
当它在应用程序中显示时,它比定义的更高和更宽10个像素,在左下边缘留下宽的边距:
(宽度= 370,身高= 225)
表单在维度上显式设置为360x215像素,边框样式为FixedDialog
,继承自System.Windows.Forms.Form
,并且没有代码来操作尺寸(除了自动生成的设计器文件)。如果我将边框样式更改为FixedSingle
或FixedToolWindow
,则会显示正确的尺寸(但我希望其样式为FixedDialog
)。
知道造成这种情况的原因是什么?
我已经通过删除表单上的MinimumSize
设置来解决此问题。看来,如果它设置为相同的大小(或接近,但我还没有找到阈值)作为Size
属性,则会引入边距。由于表单不可调整大小,我不需要MinimumSize
设置,因此可以将其删除。
我仍然不明白 为什么 但情况确实如此。
答案 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);
}
设置客户区。您需要计算出您想要的值。