2011-03-14 24 views
4

我正在一家有Winforms应用程序作为我们的旗舰产品的公司工作。 我们最近重新设计了品牌和用户界面。我们已经注意到,表单现在不能正确显示文本,并且一些控件失去对齐或消失。我如何使我的WinForms应用程序DPI-Aware

是否有可能在这个应用程序上使用DPI-Aware的表单,因为我们没有时间,所以重新分解的次数最少。

+0

可以移动到WPF,但速度不是很快。 – zerkms 2011-03-14 09:35:00

+0

可能重复的[WinForms不同的DPI布局](http://stackoverflow.com/questions/1850915/winforms-different-dpi-layouts) – ChrisF 2011-03-14 10:45:33

+0

其可能:)谢谢... – Sam 2011-03-16 04:14:51

回答

13

重要的是,您不必指定像素坐标和大小。这就排除了使用Control.TopControl.Left,这是设计者在“将”控件放置在表单上时所做的工作。

要获得可以与不同的DPI设置一起使用的用户界面,几乎所有内容都必须动态调整大小。控件应该有Control.AutoSize启用。但只是启用AutoSize将完全搞砸你的布局,因为控制位置仍然是静态的。

要动态地定位控件,可以使用容器控件,如FlowLayoutPanelTableLayoutPanel(尺寸设置为AutoSize)。根据自动确定的尺寸,这些内部的正常控件将围绕表单移动。正如你所看到的,这并不简单,需要一点经验才能使它正确并且需要大量的测试(具有不同DPI设置的虚拟机工作得很好)。但我认为这一定是可以做到的,因为如果在我的笔记本电脑上看起来很愚蠢和错误,我总是很烦恼。

+2

FlowLayoutPanel与常规面板。关键不是指定尺寸,而是锚定,停靠和增长属性。 – 2011-03-14 11:53:06

相关问题