2011-12-15 91 views
3

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

回答

3

TL; DR:您不能没有手动编码调整大小的逻辑。作为一个方面说明,你可能不应该试图做到这一点。

在传统的WinForms中,没有自动的方法来实现我自己的知识而不用自己的解决方案。 Sean87suggestedAutoScaleMode属性,但虽然它是自动的,但不支持按分辨率自动调整大小。它提供了一个基于Windows中字体大小设置或DPI设置进行缩放的选项。当简单地改变屏幕分辨率时,这些都不会直接改变,并且,实际上,大多数典型用户(甚至可能是高级用户)可能从不修改DPI或字体大小设置。

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

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

0

你可以改变表格的AutoScaleMode以及每个控件的auto size属性。你可以使用splitcontainer或者panel来组成你的专栏。

1

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

相关问题