我在高dpi设置下显示.NET Windows应用程序时遇到问题。
所有表单都设置为AutoScaleMode = DPI,但这并不能解决所有问题。
基本上标签最终扩大尺寸以应对更大的字体,但其他控件的位置不会改变,我们最终会使用标签遮盖其他控件或彼此。
屏幕应如下所示:http://www.manageinvest.com/good.jpg ..并且在高DPI上它最终看起来像这样:bad.jpg (这是我的第一篇文章,所以我只允许一个链接)
有什么建议吗?
提前致谢,
克里斯蒂安
答案 0 :(得分:6)
理论上,Winforms中的字体和DPI缩放是自动的。在实践中......不是那么多。
我注意到它在垂直缩放方面比在水平方向上更好地应对,但即便如此,它也远非完美。
根据我的经验,只有当你做两件事之一时,缩放才是可靠的:
根本不要使用设计师。这非常痛苦,但它确实为您提供了对布局的必要控制。
使用内置布局控件 - 特别是FlowLayoutPanel
和TableLayoutPanel
。这些家伙是你最好的朋友;我很少在没有它们的情况下在Winforms中做任何。
在你的情况下,我可能会选择#2。根据屏幕截图,我认为将您的布局整合到TableLayoutPanel
和FlowLayoutPanel
容器的组合中非常容易 - 甚至可能只有一个TableLayoutPanel
。
答案 1 :(得分:3)
您应该查看AutoScaleMode和AutoSize功能。结合对接能力,你应该能够达到你想要的效果。
我有一篇非常好的文章,但链接已经死了......无论如何,这应该让你开始:
http://msdn.microsoft.com/en-us/library/ms229605.aspx
http://www.sellsbrothers.com/writing/winformsAutoScaling.htm
http://msdn.microsoft.com/en-us/library/system.windows.forms.autoscalemode.aspx
答案 2 :(得分:1)
这可能无法解决您的问题。
但我们学会了标签和文本控件应垂直堆叠的困难方法,即将文本框放在标签下方,而不是放在标签旁边。这为我们解决了很多问题,包括支持多种语言,因为不同语言的文本宽度可能比英文文本更多