2012-04-26 9 views
5

I moduli di un'applicazione con cui sto lavorando hanno un datagridview come componente principale (dovrebbe occupare la maggior parte delle dimensioni), ma ci sono altri componenti. c'è uno splitcontainer orizzontale per dividerli, ma mi chiedevo come rendere il pannello superiore ridimensionato al suo contenuto. Purtroppo, i pannelli in uno SplitContainer non hanno una proprietà AutoSize ...Pannello di visualizzazione del riquadro Splitlaytainer o del pannello autosized (VB.NET)

Qui ci sono due immagini per mostrare quello che ci serve: image1 http://www.mediafire.com/conv/8d141b69c63b0d3ac8aebf9129bb77e25ee4a75086cfa6595c4510041fda1fa66g.jpg image2 http://www.mediafire.com/conv/56d959d2a9f99b71af16f7ab3eb5833874e8583f7b15bd1df16aafaa7313a7066g.jpg

Come si può vedere, il pannello superiore del SplitContainer dovrebbe adattarsi alle dimensioni dei suoi contenuti. C'è un modo per raggiungere questo obiettivo?

risposta

3

Suppongo che intendessi un contenitore di divisione "orizzontale" basato sull'immagine.

Si può provare il raggiungimento di questo manualmente utilizzando l'evento ControlAdded del pannello superiore:

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 è un pannello ho messo in Panel1 del SplitContainer e aggiunto un pulsante nella loro per aggiungere più pannelli.

+0

Ciò funzionerebbe ma speravo in qualcosa che lo faccia automaticamente. Esiste solo un controllo nel pannello superiore, un controllo utente. Quel controllo ha un pannello di visualizzazione del flusso, e mi sarebbe piaciuto il pannello superiore di splitcontainer per regolare le sue dimensioni in base alle dimensioni del pannello di visualizzazione del flusso nell'usercontrol ... Grazie comunque per la risposta. – MarioDS

+0

@MarioDeSchaepmeester Se il FLP si trova nell'UC, allora ovviamente è necessario che l'UC si ridimensioni già (è così che sembra). Collegati all'evento di ridimensionamento della UC per impostare 'SplitterDistance' – LarsTech

+0

Oh sì giusto, ci proverò, grazie. – MarioDS

Problemi correlati