2012-04-26 19 views
5

Formularios en una aplicación en la que estoy trabajando con un equipo tienen una vista de tabla de datos como componente principal (debe ocupar la mayor parte del tamaño), pero hay otros componentes. hay un contenedor dividido horizontal para dividirlos, pero me preguntaba cómo hacer que el panel superior cambie el tamaño de su contenido. Por desgracia, los paneles en una SplitContainer no tienen una propiedad AutoSize ...Splitcontainer flowlayoutpanel o panel autosized (VB.NET)

Aquí hay dos imágenes para mostrar lo que necesitamos: image1 http://www.mediafire.com/conv/8d141b69c63b0d3ac8aebf9129bb77e25ee4a75086cfa6595c4510041fda1fa66g.jpg image2 http://www.mediafire.com/conv/56d959d2a9f99b71af16f7ab3eb5833874e8583f7b15bd1df16aafaa7313a7066g.jpg

Como se puede ver, el panel superior de la SplitContainer debe ajustarse al tamaño de su contenido. ¿Hay alguna forma de lograr esto?

Respuesta

3

Supongo que quiere decir contenedor dividido "horizontal" basado en su imagen.

Puede intentar lograr esto de forma manual mediante el evento ControlAdded del panel superior:

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 es un panel coloqué en Panel1 del SplitContainer y añadió un botón en sus paneles para añadir más.

+0

Eso funcionaría pero esperaba algo que automáticamente lo haga. Solo hay un control en el panel superior, un control de usuario. Ese control tiene un panel de distribución de flujo, y me hubiera gustado que el panel superior del splitcontainer ajuste su tamaño al tamaño del panel de distribución de flujo en el control de usuario ... Gracias por su respuesta de todos modos. – MarioDS

+0

@MarioDeSchaepmeester Si el FLP está en la UC, entonces obviamente necesita tener ese UC de tamaño propio (eso es lo que parece). Simplemente enganche en el evento de cambio de tamaño de la UC para configurar el 'SplitterDistance' – LarsTech

+0

Oh sí, lo intentaré, gracias. – MarioDS

Cuestiones relacionadas