【发布时间】:2018-08-07 07:26:36
【问题描述】:
所以,情况如下:我正在尝试使我的所有表单(即 Winforms)在 4K 和 1080p(也称为高 DPI 或“dpi-aware”)中看起来不错。我(出于这个问题的目的)有三种形式: frmCompanyMasterEdit 继承自 frmBaseEdit 继承自 frmBase 继承形式 System.Windows.Forms.Form。
我尝试了旧方法,即在清单中让我的应用程序可识别 DPI:
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
</application>
这样,除了我可以修复的小锚定问题外,表格在 4K 下看起来很完美,看起来就像那样,但在 1080p 下有点模糊。这是 4K:4K both old and new ways。
无论如何,所以我从头开始并尝试使用 .NET 4.7 中描述的新方法,针对 4.7 框架并添加以下代码:
到 app.config
<System.Windows.Forms.ApplicationConfigurationSection>
<add key="DpiAwareness" value="PerMonitorV2" />
</System.Windows.Forms.ApplicationConfigurationSection>
到 app.manifest
<!-- Windows 10 compatibility -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
并将旧代码从 app.manifest 中取出,以免覆盖新的 .NET 4.7 方式。我确保将代码放在适当的位置。 所以这里的表格在 4K 中看起来不错,如上图,但现在在 1080p 中它非常放大,如下所示: 1080p new way
因此,无论哪种方式,除了较小的锚定问题外,表格在 4k 中看起来很棒,而且(旧方式)尺寸合适但在 1080p 中有点模糊,或者在 1080p 中不模糊但确实放大了。 我还必须更改所有 Designer.vb 文件中的这两行,如下所示:
Me.AutoScaleDimensions = New System.Drawing.SizeF(96.0!, 96.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi
我不知道为什么我无法让它在 1080p 中看起来合适。就像我说的,我的目标是 4.7 .NET 框架。我在适当版本的 Windows 10(版本 1709 / Creator's edition)上运行。 1080p 以 100% 缩放。此外,我们没有资源升级到 WPF。
【问题讨论】:
-
您可能需要升级到 .NET Framework 4.7.2 预览版blogs.msdn.microsoft.com/dotnet/2018/02/05/… 并再试一次,因为 Rich Lander 在宣布 4.7.1 时提到了高 DPI 区域中的更多补丁,blogs.msdn.microsoft.com/dotnet/2017/10/17/…
标签: .net vb.net winforms visual-studio highdpi