7

我的 .NET Windows 应用程序在高 dpi 设置下的显示有问题。

所有表格都设置为 AutoScaleMode = DPI,但这并不能解决所有问题。

基本上标签最终会扩大尺寸以应对更大的字体,但其他控件的位置不会改变,我们最终会看到标签遮挡其他控件或彼此。

屏幕应该是这样的:http: //www.manageinvest.com/good.jpg ..在高 DPI 上它最终看起来像这样:bad.jpg (这是我的第一篇文章,所以我只允许一个链接)

有什么建议么?

提前致谢,

克里斯蒂安

4

3 回答 3

6

理论上,Winforms 中的字体和 DPI 缩放是自动的。在实践中......没有那么多。

我注意到它比水平缩放更好地应对垂直缩放,但即便如此它也远非完美。

根据我的经验,只有当您执行以下两项操作之一时,缩放才可靠:

  1. 根本不要使用设计器。这是相当痛苦的,但它确实为您提供了对布局的必要控制。

  2. 使用内置布局控件 - 特别是FlowLayoutPanelTableLayoutPanel. 这些家伙是你最好的朋友;没有它们,我很少在 Winforms 中做任何事情。

在你的情况下,我可能会选择#2。根据屏幕截图,我认为将您的布局放入TableLayoutPanelFlowLayoutPanel容器的组合中非常容易——甚至可能只有一个TableLayoutPanel.

于 2010-01-22T04:25:05.177 回答
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

于 2010-01-22T11:16:43.550 回答
1

这可能无法解决您的问题。

但是我们学到了标签和文本控件应该垂直堆叠的艰难方法,即将文本框放在标签下方,而不是在标签旁边。这为我们解决了很多问题,包括对多种语言的支持,因为不同语言的文本宽度可以超过英文文本

于 2010-01-22T04:16:44.950 回答