我在vb.NET中使用VS2017设计了一个WinForm。我现在想添加一个功能,其中表单有两种尺寸 - 最初加载的正常尺寸,以及当用户单击窗体上的最大化按钮时触发的更大尺寸。如果可能的话,我不希望表单在用户拖动其边等时调整大小,我只希望它在单击最大化按钮时起作用。
表单本身如图所示布局,它由一个始终固定在顶部的面板和一个TabControl组成,如果窗口最大化,它将放大。 TabControl由6个TabPages组成,所有这些TabPages上都有GroupBox和Panel,每个GroupBox / Panel都有几个Labels和TextBox。当它扩大时,我希望标签和文本框的大小增长到与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 ,右,左",但我有两个问题:
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设置为" Top,Bottom,Left,Right"在Designer中,当我运行表单时单击最大化,表单以不合需要的方式展开,TabPage上的GroupBoxes重叠,文本不会在标签中改变其大小等:
非常感谢对此的任何帮助
答案 0 :(得分:1)
{{1}}。这就是你所需要的。看看吧。它基本上是一个类似网格的设置,其中每个单元格只能有一个控件。您可以将行和列的大小调整为百分比或绝对值,以获得所需的布局。
这也适用于调整大小。
停靠控件以填充所有单元格,它们将相应地增长和缩小。