2013-02-14 55 views
9

我有一个表单显示为模式对话框。形式看起来像这样在设计:为什么我的表单在显示时被调整大小?

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

当在应用程序中所示,它得到10个像素比被定义更高和更广泛的,留下一个宽缘周围的底部边缘和左边缘:

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

的形式明确地设定在尺寸360x215像素,具有FixedDialog边界风格,从继承,并没有任何代码来操纵维度(除了自动生成的设计器文件)。如果我将边框样式更改为FixedSingleFixedToolWindow,它会显示正确的大小(但我希望它的样式为FixedDialog)。

任何想法是什么造成这种情况?


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

我还是不明白为什么虽然是这样。

+0

是否设置了最大或最小属性? – CR41G14 2013-02-14 12:56:38

+1

@ CR41G14:是的,Size,MinimumSize和MaximumSize都设置为360,215。 – adrianbanks 2013-02-14 12:57:55

+0

出于好奇,它总是被碰撞到370x225(不管你使用的是什么初始尺寸),还是它总是在每边增加10个像素?您是否尝试过其他窗口大小以查看结果? – jszigeti 2013-02-14 13:11:05

回答

2

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

希望这会有所帮助。

1

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

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

这台客户端区域。你需要计算你想要的值。

6

首先,您的表单似乎已将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 

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

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

2

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

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

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

相关问题