This documentation is archived and is not being maintained.

SplitContainer Class

Represents a control consisting of a movable bar that divides a container's display area into two resizable panels.

Namespace:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

'Declaration
<DockingAttribute(DockingBehavior.AutoDock)> _
<ComVisibleAttribute(True)> _
<ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)> _
Public Class SplitContainer _
	Inherits ContainerControl
'Usage
Dim instance As SplitContainer

You can add controls to the two resizable panels, and you can add other SplitContainer controls to existing SplitContainer panels to create many resizable display areas.

Use the SplitContainer control to divide the display area of a container (such as a Form) and allow the user to resize controls that are added to the SplitContainer panels. When the user passes the mouse pointer over the splitter, the cursor changes to indicate that the controls inside the SplitContainer control can be resized.

NoteNote:

Previous versions of the .NET Framework only support the Splitter control.

SplitContainer also eases control placement at design time. For example, to create a window similar to Windows Explorer, add a SplitContainer control to a Form and set its Dock property to DockStyle.Fill. Add a TreeView control to the Form and set its Dock property to DockStyle.Fill. To complete the layout, add a ListView control and set its Dock property to DockStyle.Fill to have the ListView occupy the remaining space on the Form. At run time, the user can then resize the width of both controls using the splitter. Use the FixedPanel property to specify that a control should not be resized along with the Form or other container.

Use SplitterDistance to specify where the splitter starts on your form. Use SplitterIncrement to specify how many pixels the splitter moves at a time. The default for SplitterIncrement is one pixel.

Use Panel1MinSize and Panel2MinSize to specify how close the splitter bar can be moved to the outside edge of a SplitContainer panel. The default minimum size of a panel is 25 pixels.

Use the Orientation property to specify horizontal orientation. The default orientation of the SplitContainer is vertical.

Use the BorderStyle property to specify the border style of the SplitContainer and coordinate its border style with the border style of controls that you add to the SplitContainer.

The following code example shows both a vertical and horizontal SplitContainer. The vertical splitter moves in 10-pixel increments. The left panel of the vertical SplitContainer contains a TreeView control, and its right panel contains a horizontal SplitContainer. Both panels of the horizontal SplitContainer are filled with ListView controls, and the top panel is defined as a FixedPanel so that it does not resize when you resize the container. Moving the vertical splitter raises the SplitterMoving event, signified in this example by a change to the cursor style. The SplitterMoved event is raised when you stop moving the splitter. This is signified in this example by the cursor style reverting to the default.

' Compile this example using the following command line: 
' vbc basicsplitcontainer.vb /r:System.Drawing.dll /r:System.Windows.Forms.dll /r:System.dll /r:System.Data.dll 
Imports System
Imports System.Drawing
Imports System.Collections
Imports System.ComponentModel
Imports System.Windows.Forms
Imports System.Data
Imports Microsoft.VisualBasic

Public Class Form1
    Inherits System.Windows.Forms.Form
    Private WithEvents splitContainer1 As System.Windows.Forms.SplitContainer
    Private treeView1 As System.Windows.Forms.TreeView
    Private splitContainer2 As System.Windows.Forms.SplitContainer
    Private listView2 As System.Windows.Forms.ListView
    Private listView1 As System.Windows.Forms.ListView

    Public Sub New()
        InitializeComponent()
    End Sub 'New 

    Private Sub InitializeComponent()
        splitContainer1 = New System.Windows.Forms.SplitContainer()
        treeView1 = New System.Windows.Forms.TreeView()
        splitContainer2 = New System.Windows.Forms.SplitContainer()
        listView1 = New System.Windows.Forms.ListView()
        listView2 = New System.Windows.Forms.ListView()
        splitContainer1.SuspendLayout()
        splitContainer2.SuspendLayout()
        SuspendLayout()
        ' Basic SplitContainer properties. 
        ' This is a vertical splitter that moves in 10-pixel increments. 
        ' This splitter needs no explicit Orientation property because Vertical is the default.
        splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill
        splitContainer1.ForeColor = System.Drawing.SystemColors.Control
        splitContainer1.Location = New System.Drawing.Point(0, 0)
        splitContainer1.Name = "splitContainer1" 
        ' You can drag the splitter no nearer than 30 pixels from the left edge of the container.
        splitContainer1.Panel1MinSize = 30
        ' You can drag the splitter no nearer than 20 pixels from the right edge of the container.
        splitContainer1.Panel2MinSize = 20
        splitContainer1.Size = New System.Drawing.Size(292, 273)
        splitContainer1.SplitterDistance = 79
        ' This splitter moves in 10-pixel increments.
        splitContainer1.SplitterIncrement = 10
        splitContainer1.SplitterWidth = 6
        ' splitContainer1 is the first control in the tab order.
        splitContainer1.TabIndex = 0
        splitContainer1.Text = "splitContainer1" 

        ' Add a TreeView control to the left panel.
        splitContainer1.Panel1.BackColor = System.Drawing.SystemColors.Control
        ' Add a TreeView control to Panel1.
        splitContainer1.Panel1.Controls.Add(treeView1)
        splitContainer1.Panel1.Name = "splitterPanel1" 
        ' Controls placed on Panel1 support right-to-left fonts.
        splitContainer1.Panel1.RightToLeft = System.Windows.Forms.RightToLeft.Yes

        ' Add a SplitContainer to the right panel.
        splitContainer1.Panel2.Controls.Add(splitContainer2)
        splitContainer1.Panel2.Name = "splitterPanel2" 

        ' This TreeView control is in Panel1 of splitContainer1.
        treeView1.Dock = System.Windows.Forms.DockStyle.Fill
        treeView1.ForeColor = System.Drawing.SystemColors.InfoText
        treeView1.ImageIndex = - 1
        treeView1.Location = New System.Drawing.Point(0, 0)
        treeView1.Name = "treeView1"
        treeView1.SelectedImageIndex = - 1
        treeView1.Size = New System.Drawing.Size(79, 273)
        ' treeView1 is the second control in the tab order.
        treeView1.TabIndex = 1

        ' Basic SplitContainer properties. 
        ' This is a horizontal splitter whose top and bottom panels are ListView controls. The top panel is fixed.
        splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill
        ' The top panel remains the same size when the form is resized.
        splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel1
        splitContainer2.Location = New System.Drawing.Point(0, 0)
        splitContainer2.Name = "splitContainer2" 
        ' Create the horizontal splitter.
        splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal
        splitContainer2.Size = New System.Drawing.Size(207, 273)
        splitContainer2.SplitterDistance = 125
        splitContainer2.SplitterWidth = 6
        ' splitContainer2 is the third control in the tab order.
        splitContainer2.TabIndex = 2
        splitContainer2.Text = "splitContainer2" 

        ' This splitter panel contains the top ListView control.
        splitContainer2.Panel1.Controls.Add(listView1)
        splitContainer2.Panel1.Name = "splitterPanel3" 

        ' This splitter panel contains the bottom ListView control.
        splitContainer2.Panel2.Controls.Add(listView2)
        splitContainer2.Panel2.Name = "splitterPanel4" 

        ' This ListView control is in the top panel of splitContainer2.
        listView1.Dock = System.Windows.Forms.DockStyle.Fill
        listView1.Location = New System.Drawing.Point(0, 0)
        listView1.Name = "listView1"
        listView1.Size = New System.Drawing.Size(207, 125)
        ' listView1 is the fourth control in the tab order.
        listView1.TabIndex = 3

        ' This ListView control is in the bottom panel of splitContainer2.
        listView2.Dock = System.Windows.Forms.DockStyle.Fill
        listView2.Location = New System.Drawing.Point(0, 0)
        listView2.Name = "listView2"
        listView2.Size = New System.Drawing.Size(207, 142)
        ' listView2 is the fifth control in the tab order.
        listView2.TabIndex = 4

        ' These are basic properties of the form.
        ClientSize = New System.Drawing.Size(292, 273)
        Controls.Add(splitContainer1)
        Name = "Form1"
        Text = "Form1"
        splitContainer1.ResumeLayout(False)
        splitContainer2.ResumeLayout(False)
        ResumeLayout(False)
    End Sub 'InitializeComponent


<STAThread()>  _
Shared Sub Main()
    Application.Run(New Form1())
End Sub 'Main

Private Sub splitContainer1_SplitterMoving(sender As System.Object, e As System.Windows.Forms.SplitterCancelEventArgs) Handles splitContainer1.SplitterMoving
    ' As the splitter moves, change the cursor type.
    Cursor.Current = System.Windows.Forms.Cursors.NoMoveVert
End Sub 'splitContainer1_SplitterMoving

Private Sub splitContainer1_SplitterMoved(sender As System.Object, e As System.Windows.Forms.SplitterEventArgs) Handles splitContainer1.SplitterMoved
    ' When the splitter stops moving, change the cursor back to the default.
    Cursor.Current = System.Windows.Forms.Cursors.Default
End Sub 'splitContainer1_SplitterMoved
End Class 'Form1

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0
Show: