Vb.net 调整面板/窗体大小时,如何在面板内重新排列多个按钮?
我有一个vb.net表单,它有一个面板。在面板内部,有40个动态创建的按钮,请参见下面的代码。如果用户想要调整窗体的大小,面板将调整大小,但按钮布局不会改变,即当窗体水平扩展时,将有5列按钮而不是4列按钮。有没有办法让按钮自动排列,比如当用户将表单缩小时,只有3列、2列或1列按钮,当表单变大时,按钮将排列为5列或更多列 以下是表格的代码,以及我到目前为止所做的工作: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
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?我认为它能自动处理这些问题并自动重新绘制最适合您。谢谢,这正是我想要的!谢谢,这正是我要找的!