Сплитконтейнер Flowlayoutpanel или панель автоматического размера (VB.NET)
Формы в приложении, над которым я работаю с командой, имеют в качестве основного компонента сетку данных (она должна занимать большую часть размера), но есть и другие компоненты. есть горизонтальный контейнер для разделения, но мне было интересно, как сделать так, чтобы верхняя панель изменяла размеры к своему содержимому. К сожалению, панели в сплитконтейнере не имеют AutoSize
имущество...
Вот два изображения, на которых показано, что нам нужно:
Как вы можете видеть, верхняя панель сплитконтейнера должна соответствовать размеру его содержимого. Есть ли способ добиться этого?
1 ответ
Я предполагаю, что вы имели в виду "горизонтальный" разделенный контейнер на основе вашего изображения.
Вы можете попробовать сделать это вручную, используя ControlAdded
Событие верхней панели:
Public Class Form1
Public Sub New()
InitializeComponent()
End Sub
Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
SplitContainer1.SplitterDistance = SmallPanel.Height
End Sub
Private Sub SplitContainer1_Panel1_ControlAdded(ByVal sender As Object, ByVal e As ControlEventArgs) Handles SplitContainer1.Panel1.ControlAdded
SplitContainer1.SplitterDistance += e.Control.Height
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim addPanel As New Panel
addPanel.BorderStyle = BorderStyle.FixedSingle
addPanel.Size = New Size(SplitContainer1.Panel1.ClientSize.Width, 100)
addPanel.Location = New Point(0, SplitContainer1.SplitterDistance)
addPanel.Anchor = AnchorStyles.Left Or AnchorStyles.Top Or AnchorStyles.Right
SplitContainer1.Panel1.Controls.Add(addPanel)
End Sub
End Class
SmallPanel - это панель, которую я поместил в Panel1 SplitContainer и добавил в нее кнопку для добавления дополнительных панелей.