【发布时间】:2017-08-29 06:22:59
【问题描述】:
我们有一个旧版 .net windows 窗体应用程序。 我们已经将其中大部分替换为 Web 应用程序,但仍使用 Windows 窗体应用程序来执行管理任务。
在 4k 显示器上使用此应用程序时,它看起来非常糟糕,这是可以理解的。
但外观会根据系统上的其他显示器而变化。 测试是在 lenovo 430 上完成的,该 430 具有通过显示端口连接的 4k 显示器。 笔记本电脑显示器的分辨率为 1920/1080,4k 显示器的分辨率为 3840/2160。显示比例始终为 200%。
以下所有屏幕截图均在 4k 显示器上拍摄。
- 一个测试,两个监视器都处于活动状态
- 仅使用第二个屏幕进行一次测试
- 关闭笔记本电脑显示器的测试(这意味着系统只有一个显示器可用)
我知道如果不进行更改和设置 dpiAware/dpiAwareness,我们的应用程序在 4k 上看起来会不太好。
但我的问题是: 为什么应用程序的外观仅取决于哪些监视器处于活动状态?有没有办法控制采取哪种“类型”的外观?
【问题讨论】:
-
据我所知,发生这种情况的部分原因是您如何设置 winform 的布局属性。例如,如果将
AutoSize设置为True,则监视器分辨率的每次更改都会影响表单大小。Anchor&Dock也是如此,这就是为什么大多数人更喜欢 WPF 而不是 Winforms。如果不正确设置此属性,从 3840/2160 到 1920/1080 监视器,您会得到一个“抽象”(试图在这里开玩笑)winform。