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

C# 在不同DPI设置下运行的Windows窗体应用程序中的奇怪行为,c#,winforms,forms,scaling,dpi,C#,Winforms,Forms,Scaling,Dpi,我有一个Windows窗体应用程序(用vs2010/C编写,与.NET framework 3.5相对应),其中有一个主窗体。它是在Win7的100%DPI设置下设计的(我相信是96 DPI)。当把电脑切换到150%时,所有的东西都显示出良好的比例,所有的比例都保持不变 然而,当我切换到125%时,一些控件突然无法缩放,看起来就像它们在100%时一样大。这会弄乱整个布局,并对用户隐藏一些控件 对于125%和150%设置之间的行为差异,是否有任何逻辑解释 还有,有没有更快的方法来测试这一点?每次切

我有一个Windows窗体应用程序(用vs2010/C编写,与.NET framework 3.5相对应),其中有一个主窗体。它是在Win7的100%DPI设置下设计的(我相信是96 DPI)。当把电脑切换到150%时,所有的东西都显示出良好的比例,所有的比例都保持不变

然而,当我切换到125%时,一些控件突然无法缩放,看起来就像它们在100%时一样大。这会弄乱整个布局,并对用户隐藏一些控件

对于125%和150%设置之间的行为差异,是否有任何逻辑解释


还有,有没有更快的方法来测试这一点?每次切换时都必须注销并重新登录,这很快变得令人讨厌。

看看表单。它可能设置为字体或Dpi,添加到John Arlen的帖子中:


您可能还希望允许窗体通过使用来增长和收缩。

对于您观察到的内容,没有简单的解释

不必经历痛苦的登录周期,一种廉价的测试方法是在OnLoad方法中更改表单的字体属性:

    protected override void OnLoad(EventArgs e) {
        this.Font = new Font(this.Font.FontFamily, this.Font.SizeInPoints * 120f / 96f);
        base.OnLoad(e);
    }
关于“还有,有没有更快的方法来测试这一点?每次切换时都要注销并重新登录,这很快就会变得很烦人。”

最好是使用具有不同DPI设置的虚拟机。
您只需在“真实”计算机上运行应用程序。

当然,这就是它的可伸缩性。它被设置为字体。我把它改成了Dpi,但这似乎并没有改变任何东西。这似乎并没有改变任何东西。它当然应该,在一个小测试项目上尝试一下。在窗体中看不到效果应该是您在使其正常工作时遇到问题的原因。另一种测试方法是使用多个虚拟机。窗体可以正常增长和扩展。对它的一些控制不起作用。我将扩展我的问题,以包括这些控件的类型。