首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Surface 3中开发WinForm应用程序时GUI预览尺寸问题

在Surface 3中开发WinForm应用程序时GUI预览尺寸问题
EN

Stack Overflow用户
提问于 2015-02-18 10:50:06
回答 3查看 1.6K关注 0票数 2

我已经开发了很长时间的WinForm应用程序。我最近刚买了一个Surface 3作为我的新开发PC。不幸的是,我注意到GUI编辑器出现了问题。控件的某些大小与GUI编辑器中的内容和实际运行的应用程序中显示的不匹配。例如,当我运行应用程序时,我的面板的大小不符合GUI编辑器中的样子。它们的维数通常会增加。我不太确定这是否是VS问题,或者它可能与使用Surface 3有关?

为了演示我的意思,请考虑下面的截图。请注意GUI编辑器中菜单栏的大小与实际应用程序中的不同。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-09-20 15:31:39

自从我贴出这个问题以来已经有一段时间了,我有点忘记了。我想我应该向那些会陷入同样困境的人分享我最近的发现。

我了解到GUI编辑器和实际运行的应用程序之间的差异是因为我的Surface 3具有超高的DPI比例。与普通计算机的96 DPI (100%显示缩放)相比,Visual在216 DPI上自动运行(225%显示缩放)。当时我的解决办法是通过尝试和错误来相应地调整我的控件,并将其中的大部分锚定在GUI编辑器和运行中的应用程序之间。最终,它不再是一个问题,因为我转到了一个正常的桌面,正常的屏幕,为我的正常软件开发。向前看,我最近偶然发现了一个关于Windows自动缩放的Microsoft文档。它解释了Windows窗体多个DPI缩放的问题。它还包括有关Visual的DPI缩放问题的这部分内容:

由于显示DPI的极端差异,特别是在现代的2/1设备中,这种情况仍然可以发生在最新版本的.NET框架和Visual中。若要在使用不同DPI显示的团队中解决此问题,请确保Visual始终以非新闻部模式启动,因此Windows窗体设计器始终将布局计算建立在96 DPI之上。

他们建议的解决方案是添加或导入一个注册表值,该注册表值禁用Visual的高新闻部意识:

代码语言:javascript
复制
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\devenv.exe]
"dpiAwareness"=dword:00000000

我试过了,而且肯定成功了。希望它也能帮到你。:)

票数 1
EN

Stack Overflow用户

发布于 2015-02-18 11:25:50

如果你想阻止你的应用程序改变大小,你可以使它独立于DPI设置。您的应用程序将是像素完美,但在高分辨率屏幕上可能太小。

您所要做的就是更改主窗体的AutoScaleMode属性并将其设置为None

票数 2
EN

Stack Overflow用户

发布于 2016-02-08 23:31:59

我知道这是个老生常谈,但我也经历过同样的问题.我找到了一个你可能觉得有用的解决办法..。

在尝试了几件事情之后,很明显,windows 10试图在表面pro上对Windows 10下的窗体进行“智能”调整(我使用的是表面pro 4).我不确定这是一个win10,高分辨率或表面专业的问题.不管它是什么,它破坏了我的控制大小,位置,锚和分辨率。

我发现,如果我在设计器中记下了我的表单的预期大小,然后在我的Form_Load事件结束时用代码手动设置它,它将覆盖这种意外的行为,并且我最终得到了我原来想要的表单大小和控制位置,我还需要在父/屏幕中重新对窗体进行居中,以获得想要的结果(当然,只有当这是您的窗体的预定启动位置时)。

为我工作的代码(在Form_Load事件结束时)是.

代码语言:javascript
复制
this.height = 800;
this.width = 600;
this.CenterToScreen();

我希望这能帮上忙,我把头发拔了一段时间!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28581741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档