Сплитконтейнер 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 и добавил в нее кнопку для добавления дополнительных панелей.

Другие вопросы по тегам