在不同DPI设置下运行的Windows窗体应用程序中的奇怪行为

时间:2011-03-23 16:03:41

标签: c# winforms forms scaling dpi

我有一个Windows窗体应用程序(使用vs2010 / C#编写,针对.NET framework 3.5),其中包含一个主窗体。它是在Win7的100%DPI设置下设计的(我相信这是96 dpi)。当将计算机切换到150%时,一切看起来都很好,所有比例都保持不变。

然而,当我切换到125%时,一些控件突然不会缩放,看起来像100%那样大。这会弄乱整个布局,并隐藏用户的一些控件。

对于125%和150%设置之间的巨大行为差异,有没有任何合理的解释?

另外,有更快的方法来测试吗?每次切换时都必须重新注册并重新登录,这很快就会变得烦人。

4 个答案:

答案 0 :(得分:3)

对于你观察到的内容没有简单的解释。

一种廉价的测试方法,无需经历痛苦的​​登录周期就是在OnLoad方法中更改表单的Font属性:

    protected override void OnLoad(EventArgs e) {
        this.Font = new Font(this.Font.FontFamily, this.Font.SizeInPoints * 120f / 96f);
        base.OnLoad(e);
    }

答案 1 :(得分:2)

查看表单的AutoScaleMode。它可能设置为Font或Dpi

答案 2 :(得分:0)

加入John Arlen的帖子:

您可能还希望使用AutoSizeMode

允许表单增长和缩小

答案 3 :(得分:0)

关于"另外,有更快的方法来测试吗?每次切换时都必须重新注册并重新登录,这很快就会变得很烦人。"

最好的方法是使用具有不同DPI设置的虚拟机。 您只需从“真实”中运行您的应用程序即可。机。