2012-04-26 17 views
5

Bir uygulamada formlarımda bir ekiple çalışıyorum, ana bileşen olarak bir datagridview var (boyutunun çoğunu almalıydı), ancak başka bileşenler de var. onları bölmek için yatay bir bölme var, ama üst panelin içeriğine nasıl yeniden boyutlandırılacağını merak ediyordum. image1 http://www.mediafire.com/conv/8d141b69c63b0d3ac8aebf9129bb77e25ee4a75086cfa6595c4510041fda1fa66g.jpg image2 http://www.mediafire.com/conv/56d959d2a9f99b71af16f7ab3eb5833874e8583f7b15bd1df16aafaa7313a7066g.jpgSplitcontainer flowlayoutpanel veya otomatik boyutlandırılmış panel (VB.NET)

Gördüğünüz gibi, SplitContainer üst paneli: Ne yazık ki, bir SplitContainer içinde paneller bir AutoSize özelliği yok ...

Burada ne gerek göstermek için iki görüntülerdir içeriğinin büyüklüğüne göre ayarlanmalıdır. Bunu başarabilmenin bir yolu var mı?

cevap

3

Görüntünüzü temel alarak "yatay" bölünmüş konteyner kastettiğinizi varsayalım.

Üst panelin ControlAdded olayı kullanarak el Bunu başarmak deneyebilirsiniz:

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 ben SplitContainer arasında Panel1 yerleştirilir ve onların eklemek için daha panellerde bir düğme eklendi bir paneldir.

+0

Bu işe yarıyordu, ancak bunu otomatik olarak yapan bir şey umuyordum. Üst panelde yalnızca bir kontrol vardır, bir usercontrol. Bu kontrol içinde bir akış paneli var ve ben usercontrol de flowlayout panelin boyutuna boyutunu ayarlamak için splitcontainer üst paneli sevdim olurdu ... Yine de cevabınız için teşekkürler. – MarioDS

+0

@MarioDeSchaepmeester FLP UC'de ise, o zaman UC'nin kendisini yeniden boyutlandırmış olması gerekir (işte böyle geliyor). Sadece 'SplitterDistance' – LarsTech

+0

Ah evet ayarlamak için UC'nin resize olayı içine kanca, evet, bunu deneyeceğim. – MarioDS