如何正确设置锚点/对接,以便GUI可以适应多种屏幕尺寸

时间:2012-01-15 18:33:48

标签: c# winforms c#-4.0

我有简单的WinForms GUI,我想与TabPages一起使用。我遇到的问题是调整大小并使用多种尺寸的屏幕。我为每个TextBox,GroupBox更改了哪些设置,使其非常适合屏幕而不会让用户觉得它设计得很糟糕?

通常我会使用Dock填充,但它不适用于1 GroupBox以上。然后我检查/玩Anchor试图让它绑定到顶部,左侧,右侧,底部的一切,但这会造成很大的混乱(文本框重叠其他标签,texbox等)。我试着在这里选择一些,有些在这里,但每当我尝试调整意外事件时都会发生。我怎么会离开这里?我的系统是24英寸,分辨率为1920x1080p,但我的用户通常有1024x768到1920x1080的范围。

现在我正在使用Devexpress控件,但问题同时适用于Devexpress和内置控件。

screenshot

1 个答案:

答案 0 :(得分:2)

首先,将设计器中的表单大小设置为小于最小预期分辨率 - 比如900x650左右。然后,您可以设计一个可以在所有分辨率下工作的表单,即使它没有调整大小。

接下来,确定哪些控件应该保持固定大小,哪些控制应该随着我们的形式变大而拉伸/增长。首先,某些字段不会从放大中受益(例如,如果您的文本框总是包含最多3位数的百分比,那么允许它增长到足以显示9位数就毫无意义甚至适得其反。其次,一些字段填充表单的整个宽度,因此如果它们随之生长,它们自然会更好地工作。

现在,设置锚定。通常,将控件的边缘锚定到窗体的最近边缘。如果您只设置一个锚点,则控件将不会拉伸,并且锚定边缘将从窗体的那一侧开始相同的距离。

如果您想要一个控件伸展,锚定对侧(例如左侧和右侧)。这将使这些边缘与窗体的边缘保持相同的距离,因此控件将拉伸以适合。

你会看到,如果一个控件被固定到位,并且它旁边的控件被设置为拉伸,那么它们很可能会最终重叠,所以你必须将整个窗体上的所有控件都视为一个相关团体。

要获得更多控制,请将控件组放入容器控件(如面板或组框)中。然后他们的锚定与他们的父组相关联,并且该组可以锚定到表单。

要查看效果,只需在设计器中调整表单大小并查看所有内容的位置 - 然后撤消并修复任何无效的锚定。您很快就会了解布局的工作原理,以及如何设计表单以适应调整大小。