2012-04-26 72 views
5

我正在與團隊合作的應用程序中有一個datagridview作爲主要組件(它應占用大部分大小),但還有其他組件。有一個水平拆分容器來拆分它們,但我想知道如何使頂部面板調整到其內容。不幸的是,在SplitContainer的面板不具有AutoSize財產...Splitcontainer flowlayoutpanel或自動化面板(VB.NET)

這裏有兩個圖像,顯示我們所需要的: image1 http://www.mediafire.com/conv/8d141b69c63b0d3ac8aebf9129bb77e25ee4a75086cfa6595c4510041fda1fa66g.jpg image2 http://www.mediafire.com/conv/56d959d2a9f99b71af16f7ab3eb5833874e8583f7b15bd1df16aafaa7313a7066g.jpg

正如你所看到的,SplitContainer的頂部面板應該調整到其內容的大小。有什麼辦法可以做到這一點?

回答

3

我假設你的意思是根據你的圖像「水平」拆分容器。

你可以嘗試使用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是面板I置於SplitContainer中的Panel1的,並在其添加更多的面板增加了一個按鈕。

+0

這將工作,但我希望能自動做到這一點。在上面板中只有一個控件,一個用戶控件。該控件在其中有一個流程佈局面板,我希望splitcontainer頂部面板將其大小調整爲usercontrol中的流程佈局面板的大小......無論如何感謝您的答案。 – MarioDS 2012-04-26 16:05:03

+0

@MarioDeSchaepmeester如果FLP在UC中,那麼你顯然需要讓UC調整自己的大小(聽起來就是這樣)。只需勾選UC的調整大小事件來設置「SplitterDistance」 – LarsTech 2012-04-26 16:17:14

+0

哦,是的,我會嘗試,謝謝。 – MarioDS 2012-04-26 16:36:56