Winforms Visual Studio与DPI问题
我正在Windows Vista上使用VS2008开发Windows窗体应用程序。前几天我试图在WindowsXP上运行我的应用程序,但GUI上的一切都搞砸了。我意识到我在Windows Vista上使用120 Dpi的设置开发应用程序,我的XP设置为96 Dpi 我的应用程序有几个用户控件,如果我将DPI更改为96,即使在visualstudio中,它们也会收缩。我相信现在很多人都在高dpi中使用visualstudio。那么,如何确保我的GUI在VisualStudio和运行时都不会出错呢Winforms Visual Studio与DPI问题,winforms,visual-studio,user-interface,dpi,autoscalemode,Winforms,Visual Studio,User Interface,Dpi,Autoscalemode,我正在Windows Vista上使用VS2008开发Windows窗体应用程序。前几天我试图在WindowsXP上运行我的应用程序,但GUI上的一切都搞砸了。我意识到我在Windows Vista上使用120 Dpi的设置开发应用程序,我的XP设置为96 Dpi 我的应用程序有几个用户控件,如果我将DPI更改为96,即使在visualstudio中,它们也会收缩。我相信现在很多人都在高dpi中使用visualstudio。那么,如何确保我的GUI在VisualStudio和运行时都不会出错呢
编辑:我读了几篇关于这个问题的文章,我知道我应该将AutoScaleMode设置为None。但是,这仍然不会阻止我的标签适应操作系统强制执行的新DPI设置。我需要一种方法来防止标签增长/收缩,因为其他GUI元素的大小都是固定的。我已经有一段时间没有解决这个问题了,但请尝试将AutoSize=False设置。此外,UseCompatibleTextRendering=True可能会有所帮助。这是一个相当老的问题,但我想分享我的解决方案/观点。我最近遇到了类似的问题。实际上,我希望VisualStudio保持WinForms的原样,但要在运行时进行扩展。我没有找到关于如何正确做到这一点的一致性总结。经过一些阅读和实验,我得出了这个解决方案:
- 保持表单的
AutoScaleMode=Font
- 在窗体设计器中设置:
Font=MS Sans;11px
- 在Forms Ctor中,在初始化组件后设置:
Font=systemfont.DefaultFont
- 通过清单或API函数启用DPI感知