2012-04-26 86 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