当窗体最大化时,如何让窗体上的所有控件展开并按比例增加大小?

How can I get all controls on a form to expand out and increase proportionally in size when form is maximized?

我有一个在设计时 IDE 相当大的表单 (905 X 813)。

我添加了这段代码使表单全屏显示:

private void Form1_Load(object sender, EventArgs e)
{
    TopMost = true;
    FormBorderStyle = FormBorderStyle.None;
    WindowState = FormWindowState.Maximized;
}

...但是控件紧靠西北角并且仍然留下很多 "dead space",因为表单被磁化到西北角,而不是其控件的大小增加。

如何让控件向各个方向展开,填满整个屏幕?

这不需要考虑不同的显示器尺寸等 - 它只是一个模型。

我试图将外部面板的锚 属性 设置为中间/"all" 设置,但它不允许我 - 它停留在 "Top, Left"...?! ?

我不太清楚...您可以利用 ANCHOR,启用 LEFT 和 RIGHT 使控件向右方向增长,并禁用 LEFT 使其通过表单 "walk"。当然在每个控件上做一个任务你会为他们实现理想的position/size。

总之,您可以手动索引所有控件的所有位置和大小,使用变量获取WIDTH和HEIGHT并计算一种索引。这是一项艰巨的任务,但它使您能够准确控制每个控件的位置和高度。

但是如果你想重新调整控件以保持所有比例(我的意思是,改变它们的字体大小),也许这段代码可以帮助你:http://www.codeproject.com/Tips/1025766/VB-NET-Dynamically-Resize-and-Reposition-All-Contr

通常,在 Wpf 中,我将所有控件放在 Grid 中,每个控件都占据其行和列的位置。我 "lock" 通过将每个控件的大小设置为 Auto 来将每个控件的大小调整到它的位置。然后我 "lock" (size="Auto") 整个网格及其父表单。这样,当窗体展开时,网格展开,其所有 rows/columns 均等地展开 => 因此所有控件均等地展开。

在 Winform 中,您可以使用 TableLayoutPabel,它相当于 Wpf 中的 Grid。现在,如果您锚定到所有 4 个边,控件将根据其父项(在本例中为插槽)的大小保留其大小比例。因此,当窗体变大时,插槽也会变大,从而迫使所有控件的 SIZE 变大。