如何使我的WinForms应用程序DPI意识

Sam*_*Sam 4 c# dpi winforms

我在一家拥有Winforms应用程序作为我们旗舰产品的公司工作.我们最近重新设计了品牌和用户界面.我们已经注意到,窗体现在不能正确显示文本,并且某些控件不对齐或已从边缘消失.

由于我们没有时间,因此我可以使用最少量的重新分解来在此应用程序DPI-Aware上制作表单.

小智 13

您必须不指定像素坐标和大小.当你将控件"放置"在表单上时,这就排除了使用Control.TopControl.Left设计器所做的操作.

要获得适用于不同DPI设置的UI,几乎所有内容都必须动态调整大小.控件应该已Control.AutoSize启用.但只是启用AutoSize会完全搞砸你的布局,因为控制位置仍然是静态的.

要动态定位控件,可以使用容器控件,例如FlowLayoutPanelTableLayoutPanel(尺寸设置为AutoSize).根据自动确定的尺寸,那些内部的正常控件将仅在表格周围移动.

正如您所看到的,这并不简单,需要一些经验才能使其正确并需要大量测试(具有不同DPI设置的虚拟机工作得很好).但我认为应该肯定这样做,因为如果我的笔记本电脑上看起来很蠢和有些东西,我总是很生气.

  • 带有常规面板的FlowLayoutPanel.关键不是指定大小,而是指定锚定,停靠和增长属性. (2认同)