0

我用 VS2017 在 vb.NET 中设计了一个 WinForm。我现在想添加一个功能,表单有两种尺寸 - 它最初加载的正常尺寸以及当用户单击表单上的最大化按钮时触发的更大尺寸。如果可能的话,如果用户拖动它的侧面等,我不希望表单调整大小,我只希望它在他们单击最大化按钮时工作。

窗体本身的布局如图所示,它由一个始终固定在顶部的 Panel 和一个在窗口最大化时会放大的 TabControl 组成。TabControl 由 6 个 TabPages 组成,所有这些 TabPages 上都有 GroupBoxes 和 Panels,每个 GroupBox/Panel 都有几个 Labels 和 TextBoxes。当它放大时,我希望标签和文本框的大小增长到与 TabControl 放大相同的百分比 - 基本上 TabControl 中的所有内容都增长相同的百分比

表单布局

我正在考虑的一个可能的解决方案是捕获最大化和“正常大小”的表单状态(在加载时触发正常大小,如果用户单击以取消最大化最大化的表单),然后遍历每个选项卡上的每个控件页面并设置每个控件的样式以适应所需的更大布局。

我设法捕获了最大化和最小化的事件,如下所示:

Private Sub Form1_Resize(sender As Object, e As EventArgs) Handles Me.Resize

    If Me.WindowState = FormWindowState.Maximized Then

        Console.WriteLine("I have been maximised")

    End If

    If Me.WindowState = FormWindowState.Normal Then
        Console.WriteLine("I have been minimised")
    End If

End Sub

我尝试将除 TabControl 之外的每个控件的 Anchor Style 设置为“Top,Bottom,Right,Left”,然后在上面的子程序中,将 TabControl AncorStyle 设置为“Top,Bottom,Right,Left”,但我有两个问题有了这个:

1) 以下代码无法正常工作,无法将 AnchorStyle 设置为“Top,Bottom,Right,Left”

TabControl1.Anchor = AnchorStyles.Top Or AnchorStyles.Bottom Or AnchorStyles.Left Or AnchorStyles.Right

以下也未成功:

TabControl1.Anchor = AnchorStyles.Top And AnchorStyles.Bottom And AnchorStyles.Left And AnchorStyles.Right

2) 当我在设计器中手动将 TabControl 的 AnchorStyle 设置为“上、下、左、右”,并在运行表单时单击“最大化”时,表单以不希望的方式展开,TabPage 上的 GroupBoxes 重叠,文本在标签等中没有改变其大小:

在此处输入图像描述

对此的任何帮助将不胜感激

4

1 回答 1

1

TableLayoutPanel. 这就是你需要的。看看它。它基本上是一个类似网格的设置,其中每个单元格只能有一个控件。您可以将行和列的大小设置为百分比或绝对值以获得所需的布局。

这也适用于调整大小。

停靠控件以填充所有单元格,它们将相应地增长和缩小。

于 2018-04-25T11:59:15.063 回答