简介:有很多评论说"WinForms不能自动扩展到DPI /字体设置;切换到WPF".但是,我认为这是基于.NET 1.1; 看起来他们在.NET 2.0中实现自动扩展实际上做得非常好.至少基于我们迄今为止的研究和测试.但是,如果你们中的一些人知道的更好,我们很乐意听取你的意见.(请不要打扰我们应该切换到WPF ...现在不是一个选项.)
WinForms中的内容不能正确自动缩放,因此应该避免?
编写WinForms代码时程序员应遵循哪些设计指南,以便自动扩展?
请参阅下面的社区维基答案.
这些是不正确还是不充分?我们应采用的其他指导方针?是否还有其他需要避免的模式?对此的任何其他指导将非常感激.
我在C#中有一个表单应用程序.当我更改显示器的DPI时,所有控件都会移动.我使用了代码this.AutoScaleMode = AutoScaleMode.Dpi,但它没有避免这个问题.
有没有人有想法?
使用我当前的显示器,我更喜欢每英寸120像素的DPI设置(窗口暗示为默认值).但是,在设计表单后,它通常会在不使用每英寸120像素的系统上错误地布局.
我想知道,每当我使用设计师时,我是否有必要将显示设置设置为每英寸96像素?
此外,当其他开发人员具有不同的DPI时,存在一些问题.他们在设计器中打开一个表单并移动类似文本编辑控件的东西,然后突然发现它自动调整大小.然后,有一个控件与其他控件的尺寸不同,而且我们一团糟.
PS我已经阅读了相关帖子.他们都很有趣,但没有回答我的问题.
我想让我的C#应用程序了解DPI.Windows API中有一个名为SetProcessDPIAware()的命令,但问题是它只能在Windows Vista和更高版本的Windows中运行,而不能在XP中运行.如何使控件,按钮和字体DPI识别,使其无论使用何种Windows版本都能正确显示?