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

标签 c# winforms forms scaling dpi

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

但是,当我切换到 125% 时,某些控件突然无法缩放并且看起来和 100% 时一样大。这会打乱整个布局,并向用户隐藏一些控件。

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

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

最佳答案

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

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

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

关于c# - 在不同 DPI 设置下运行的 Windows 窗体应用程序中的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5408158/

相关文章:

c# - 扩展 Bootstrap 选择

C# 如何获取下载文件的大小以显示进度条百分比

php - 我创建了一个 html 提交按钮并与 php 代码连接,但是选择该按钮后如何返回我的 html 页面?

javascript - html 表单上不需要的自动填充

c# - 关于T型的问题

c# - 如何从 CheckedListBox 中获取选中项的值?

winforms - WinForm 应用程序停止运行并卡住窗口

winforms - 如何将 Windows 7 跳转列表添加到应用程序

c# - 我应该在 C# 中为我的项目使用 WPF 还是 Windows 窗体应用程序?

javascript - 即使没有选择任何单选按钮,Radiobutton .val()也不返回空值