高分屏、屏幕有缩放比情况下Winform窗体变形问题解决方案
环境
电脑:联想拯救者Y9000P
主屏分辨率:2560x1600
缩放:150%
操作系统:Windows 11
Visual Studio版本:VS2022
问题描述
我最初是在之前小米游戏(Windows10,主屏分辨率1920x1080,缩放100%)本上开发的一个winform应用,一切显示正常,在更换到高分屏的联想笔记本电脑下,在使用vs2022开发Winform窗体应用时,界面控件位置乱了,有遮挡,按钮也变小了,同时在窗体设计器顶部出现一个提示:
主显示器缩放比例设置为150%。请考虑在非DPI感知模式下打开WinForms设计器。
如下图:
运行时效果如下:
可以看出明显时有问题的。
解决方案
永久方案:修改注册表(亲测有效,个人推荐)
1、打开注册表编辑器,找到下面这个路径:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
如下图:
2、在右侧新建一个字符串值。
2.1 值为:devenv.exe所在的路径(安装vs时选择的路径不同位置会有所不同,如果安装了多个版本的vs,则需要添加多个值)
2.2 类型为:REG_SZ
2.3 数据为:DPIUNAWARE
我的VS2022版本的devenv.exe的路径为:
D:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\devenv.exe
我的VS2013版本的devenv.exe的路径为:
D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe
添加完,如下图:
3、关闭注册表编辑器,关闭已打开的VS,重新打开VS,如下图:
可以看到,显示已经正常了,窗体设计器顶部的提示也没有了。
4、运行后的效果如下图:
也显示正常了。
其他临时方案不推荐用,此处不再描述。