Vb.net 调整面板/窗体大小时,如何在面板内重新排列多个按钮?

Vb.net 调整面板/窗体大小时,如何在面板内重新排列多个按钮?,vb.net,Vb.net,我有一个vb.net表单,它有一个面板。在面板内部,有40个动态创建的按钮,请参见下面的代码。如果用户想要调整窗体的大小,面板将调整大小,但按钮布局不会改变,即当窗体水平扩展时,将有5列按钮而不是4列按钮。有没有办法让按钮自动排列,比如当用户将表单缩小时,只有3列、2列或1列按钮,当表单变大时,按钮将排列为5列或更多列 以下是表格的代码,以及我到目前为止所做的工作: Public Class Form1 Private Sub Form1_Load(sender As Obje

我有一个vb.net表单,它有一个面板。在面板内部,有40个动态创建的按钮,请参见下面的代码。如果用户想要调整窗体的大小,面板将调整大小,但按钮布局不会改变,即当窗体水平扩展时,将有5列按钮而不是4列按钮。有没有办法让按钮自动排列,比如当用户将表单缩小时,只有3列、2列或1列按钮,当表单变大时,按钮将排列为5列或更多列

以下是表格的代码,以及我到目前为止所做的工作:

    Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim a, b As Integer

        For i = 0 To 40
            Dim SampleButton As New Button With {
                .Name = "Sample_Button" & "-" & i.ToString,
                .Text = "Sample_Button" & "-" & i.ToString,
                .Location = New Point(a, b),
                .Font = New Font("Segoe UI", 11, FontStyle.Regular),
                .Height = 50,
                .Width = 180,
                .FlatStyle = FlatStyle.Flat,
                .TextAlign = ContentAlignment.MiddleCenter,
                .Cursor = Cursors.Hand
            }

            a += SampleButton.Width + 10

            If (a + SampleButton.Width) > Panel_MainMenu.Width Then
                a = 10
                b += SampleButton.Height + 10
            End If

            SampleButton.BackColor = Color.FromArgb(255, 232, 251, 232)

            Panel_MainMenu.Controls.Add(SampleButton)
        Next
    End Sub

    Private Sub Panel_MainMenu_Layout(sender As Object, e As LayoutEventArgs) Handles Panel_MainMenu.Layout
        'For Each Controls In Panel_MainMenu.Controls

        'Next

    End Sub

End Class
我所做的:

将面板\ U主菜单定位到顶部、左侧、右侧和底部它有助于根据窗体的大小调整面板的大小,但不能根据窗体中的按钮来调整面板的大小 Panel_main menu.AutoScroll=True Panel_MainMenu.AutoSize=False和Panel_MainMenu.AutoSizeMode=growtonly 我在谷歌上搜索了如何使用Panel.Layout,但我还没有找到一种方法将按钮布局解析为Panel.Layout,让它们进行相应的调整。 我将Panel_主菜单的最小大小设置为776426
任何帮助都将不胜感激。谢谢你阅读我的帖子

只需从使用面板更改为:

表示水平动态布局其内容的面板 或者垂直

然后,您将不需要为每个按钮指定位置,因为这将为您处理


锚定/停靠FlowLayoutPanel,使其随表单调整大小,然后按钮将自动排列。

只需从使用面板更改为:

表示水平动态布局其内容的面板 或者垂直

然后,您将不需要为每个按钮指定位置,因为这将为您处理


锚定/停靠FlowLayoutPanel,使其随表单调整大小,然后按钮将自动排列。

为什么不使用FlowLayoutPanel?我认为它能自动处理这些问题并自动重新绘制对您来说是最好的。您为什么不使用FlowLayoutPanel?我认为它能自动处理这些问题并自动重新绘制最适合您。谢谢,这正是我想要的!谢谢,这正是我要找的!