[英]Enlarge form controls when the maximize button is clicked
我已经在vb.NET中使用VS2017设计了一个WinForm。 我现在想添加一个功能,使表单具有两种尺寸-最初加载时的正常尺寸,以及用户单击表单上的最大化按钮时触发的较大尺寸。 如果可能的话,我不希望用户拖动其侧面等方式来调整窗体的大小,我只希望他们单击最大化按钮时才能工作。
窗体本身的布局如图所示,它由一个始终固定在顶部的Panel和一个TabControl组成,如果窗口最大化,TabControl将会放大。 TabControl由6个TabPage组成,所有TabPage上都有GroupBoxes和Panel,每个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设置为“ Top,Bottom,Left,Right”,并在运行表单时单击“最大化”时,表单以不希望的方式散布,而TabPage上的GroupBox重叠了,文字不会在“标签”等中更改其大小:
任何帮助,将不胜感激
TableLayoutPanel
。 那就是你所需要的。 看一看。 它基本上是一个类似于网格的设置,其中每个单元只能有一个控件。 您可以将行和列的大小设置为百分比或绝对大小,以获得所需的布局。
这也将与调整大小一起使用。
停靠控件以填充所有单元格,它们将相应地增长和收缩。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.