我在Visual Studio 2010中使用C#Winforms。由于我已经将笔记本电脑从旧的1366 x 768分辨率笔记本电脑升级到了1920x1080分辨率的新笔记本电脑,因此在继续开发新笔记本电脑时我注意到了一个问题。我将问题归结为新的150%Windows操作系统范围的缩放比例(旧笔记本电脑上的Windows使用了100%缩放比例)。当我运行该程序时,窗口的右侧被切掉了。
这是旧笔记本电脑上的工作版本(宽1000像素,或在150%缩放的Windows模式下为1500像素):
这是新笔记本电脑的新版本,带有切碎的窗口(宽度为1286像素,由于缩放比例为150%,因此应该为1500)。
立即将项目加载到新的150%缩放的Windows安装程序中并运行该程序后,它似乎可以正常工作,但是只要您移动其中一个按钮以便VS更新设计器代码(按钮5就会按您可以看到),然后运行,将窗口切碎。
即使手动进入Form1.Designer.cs代码,并将ClientSize调整为ClientSize = new System.Drawing.Size(3000, 709);
之类的愚蠢的高水平值,也会导致窗口宽度最多限制为1286像素。 (并非如此)巧合的是,1286年约为1920 / 1.5。
基本上,到底发生了什么?这似乎是VS缩放管理中的错误。明确地说,在任何系统上,将开发从100%Windows缩放屏幕迁移到150%Windows缩放屏幕时,都会发生此问题。您不需要两台笔记本电脑即可重现该问题,所有问题都可以在一台笔记本电脑上重现(但请确保在从100%或150%切换到/切换到Windows之后,您注销并登录到Windows)。
最后,要清楚一点,我知道使用app.manifest
文件将DPI感知设置设置为true的知识。尽管这样可以使文本更清晰并解决了切碎的窗口问题,但是由于程序GUI中的更改不一致(例如重叠的控件和某些设置中的项目放置不正确),我不想走这条路。
答案 0 :(得分:0)
到目前为止,我已经找到两个半解:
首先是升级到Visual Studio 2017(这使您可以在VS Forms Designer中强制进行100%缩放,即使Windows缩放为150%)
第二个版本与Visual Studio的早期版本(包括VS 2010)保持一致,但请确保Windows设置为100%缩放。如果只更改了缩放设置,请确保注销并退出Windows,以确保正确应用了缩放。