Splitcontainer flowlayoutpanel или панель автоматического размера (VB.NET)

Формы в приложении, над которым я работаю с командой, имеют представление данных в качестве основного компонента (оно должно занимать большую часть размера), но есть и другие компоненты. есть горизонтальный разделенный контейнер, чтобы разделить их, но мне было интересно, как изменить размер верхней панели в соответствии с ее содержимым. К сожалению, панели в разделенном контейнере не имеют свойства AutoSize...

Вот два изображения, чтобы показать, что нам нужно: image1
(источник: mediafire.com)

image2
(источник: mediafire.com< /а>)

Как видите, верхняя панель сплитконтейнера должна подстроиться под размер его содержимого. Есть ли способ добиться этого?


person MarioDS    schedule 26.04.2012    source источник


Ответы (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 и добавил в них кнопку, чтобы добавить больше панелей.

person LarsTech    schedule 26.04.2012
comment
Это сработает, но я надеялся на что-то, что делает это автоматически. Фактически на верхней панели есть только один элемент управления — пользовательский. В этом элементе управления есть панель потока, и мне бы хотелось, чтобы верхняя панель разделенного контейнера регулировала свой размер в соответствии с размером панели потока в пользовательском элементе управления... В любом случае спасибо за ваш ответ. - person MarioDS; 26.04.2012
comment
@MarioDeSchaepmeester Если FLP находится в UC, то вам, очевидно, нужно, чтобы этот UC уже менял размер (именно так это звучит). Просто подключитесь к событию изменения размера UC, чтобы установить SplitterDistance - person LarsTech; 26.04.2012