I've been using the DockPanel Suite framework in a little home application I'm working on. I like it. It provides Visual Studio like window docking for very little effort.
It is an open source project on SourceForge. It could do with better C# 'Getting Started' guide but it is simple to use and the separately downloaded VB documentation gives enough clues to get started. Lot of 'here are what you can achieve stuff', but a bit short on 'here are examples to get you started'.
To use, place a DockPanel filling your window client. This will be the parent for all docking windows. Or if like me you like the programmatic injection approach:
private DockPanel CreateDockPanel()
DockPanel dockPanel = new DockPanel();
dockPanel.ActiveAutoHideContent = null;
dockPanel.Dock = DockStyle.Fill;
dockPanel.Font = new Font("Tahoma", 14F, FontStyle.Regular, GraphicsUnit.World);
dockPanel.Name = "dockPanel";
MainForm mainForm = new MainForm(mainFormController, dockPanel);
public MainForm(IMainFormController controller, Control dockPanel) : this()
this.controller = controller;
Your docking windows must all be UserControls that inherit from DockContent (which inherits from UserControl).
An example from some of my code adding a docking window:
propertiesView = new PropertiesView();
propertiesView.ShowHint = DockState.DockLeft;
A gotcha I found was when passing the DockPanel be sure to reference it as a DockPanel type and not just as a Control. It seems to make a difference.