如何根据分辨率重新调整控件大小?

时间:2011-12-15 16:31:38

标签: winforms visual-studio resize anchor dock

在WinForms应用程序中,根据屏幕分辨率和最大化和重新调整窗口大小来处理重新调整大小控件的最佳方法是什么。我有3列像这样设置。每列中的LABEL TEXTBOX。你可以把它算作6列。我已尝试锚定到右侧但问题是第1列中的文本框将重叠接下来的2列。我也试过对接,但似乎没有做到这一点。这有什么简单的方法吗?

3 个答案:

答案 0 :(得分:3)

TL; DR :如果没有手动编码大小调整逻辑,则无法做到。作为旁注,你可能不应该尝试这样做。

在传统的WinForms中,如果不滚动自己的解决方案,就没有自动的方法。 Sean87 suggested AutoScaleMode属性,但是当它自动时,它不支持按分辨率自动调整大小。它提供了基于Windows中的字体大小设置或DPI设置进行缩放的选项。只需更改屏幕分辨率,这些都不会直接改变,老实说,大多数典型用户(甚至可能是高级用户)可能永远不会修改DPI或字体大小设置。

此外,从基本用户的角度来看,提高屏幕分辨率的重点是提供更多的虚拟桌面“空间”来放置应用程序窗口。真的,大多数显示器现在都是基于LCD的,因此{{3}改变这一点主要是CRT过去的事情。但是,购买新的更大的显示器的行为仍然会让典型的用户增加这个虚拟屏幕空间,以便他们可以同时在屏幕上看到更多的窗口。我认为总是保持与屏幕分辨率相同的相对大小的应用程序并不常见,并且与大多数用户的期望相悖,包括我们的高级开发人员用户。

通常情况下,如果窗口调整大小,您将对应用程序进行编码以智能且有用地调整其内容,但通常您会按照用户的方式管理它,因为它是他们的机器和他们的偏好(将其视为“我的”房子,我的规则“原则”。这也是大多数(所有?)应用程序不改变窗口位置的原因,除非用户直接操作(通过拖动窗框等)。实际上,所有这些都可能解释了为什么Microsoft选择 not 来包含基于分辨率的任何自动调整规则。

答案 1 :(得分:1)

您没有定义“列”的含义。通常,您应该使用TableLayoutPanel并在每个“单元格”中设置控件的锚点。

答案 2 :(得分:0)

您可以更改表单的AutoScaleMode以及每个控件的自动大小属性。您可以使用splitcontainer或面板来构建列。