我有一个问题,我们的.NET视窗应用程序在高dpi设置下的显示。
所有表单都设置为AutoScaleMode = DPI,但这并不能解决所有问题。
基本上,标签最终会随着字体变大而变大,但其他控件的位置不会改变,我们最终会用标签遮挡其他控件或彼此。
屏幕应该看起来像这样:http://www.manageinvest.com/good.jpg ..and on high DPI它最终看起来像这样:bad.jpg (这是我的第一篇文章,所以我只被允许一个链接)
有什么建议吗?
提前谢谢你,
克里斯蒂安
发布于 2010-01-22 12:25:05
理论上,Winforms中的字体和DPI缩放是自动的。实际上..。不是很多。
我注意到,它在垂直缩放方面比水平缩放处理得更好,但即使这样,它也远不完美。
根据我的经验,只有当你做以下两件事中的一件时,伸缩才是可靠的:
FlowLayoutPanel和TableLayoutPanel。这些人是你最好的朋友;我在Winforms中很少没有他们就能做任何事情。在你的情况下,我可能会选择#2。基于屏幕截图,我认为将你的布局放入TableLayoutPanel和FlowLayoutPanel容器的组合中是相当容易的-甚至可能只有一个TableLayoutPanel。
发布于 2010-01-22 19:16:44
您应该研究一下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
发布于 2010-01-22 12:16:45
这可能无法解决您的问题。
但是我们学到了标签和文本控件应该垂直堆叠,即把文本框放在标签下面,而不是标签旁边。这为我们解决了许多问题,包括支持多种语言,因为不同语言的文本宽度可以大于英语文本
https://stackoverflow.com/questions/2114857
复制相似问题