Important Note
We intend to create a new release of this open source product at the end of the next month (June 28, 2009). Please send any bug you've found (or desired change request) at contact@osec.ro .
Thank you all for using this product.
Introduction
This article describes how to use the free dock container library in your applications.
You can download the full source from here. The full documentation for the product can be accessed here.
Here is a image of the sample project of this application:
Background
This user control is made in C# and allows docking child forms on Left, Right, Top, Bottom and Fill.
The dock is guided by dock guiders.
Using the Code
There are two important classes in this library: DockableToolWindow and DockContainer.
The DockableToolWindow is the base class for the tool windows.
The most important property from this class is AllowedDock
. This property returns the allowed dock values for the tool window which specializes this class. By default, this property allows docking the tool window on all panels. Overriding this property can change the dock behavior of the tool window (for example can allow only dock left or right).
The DockContainer class is the user control which hosts the tool windows.
This control should be added to the main form and docked fill.
Then you can add forms to it using the
AddToolWindow method. This method adds a tool window to be managed by dock container. The caller must show the form to make it visible.
private void ShowNewForm ()
{
DockableToolWindow childForm = new DockableToolWindow ();
_dockContainer1.AddToolWindow (childForm);
childForm.Show ();
}
The forms can be added and docked with a single call to the
DockToolWindow method.
private void OnCreateNewToolWindowDockedLeft (object sender, EventArgs e)
{
DockableToolWindow childForm = new DockableToolWindow ();
_dockContainer1.DockToolWindow (childForm, zDockMode.Left);
childForm.Show ();
}
The tool windows can be undocked using the
UndockToolWindow method. Here is a sample of how to un-dock the top level tool-window from the left panel and then move it to an arbitrary location:
DockableToolWindow toolWindow = _dockContainer.GetTopToolWindow(zDockMode.Left);
if (toolWindow != null)
{
_dockContainer.UndockToolWindow(toolWindow);
toolWindow.Location = new Point(300, 100);
}
It is important for the users of this library to use the
MinimumSizeChanged event to enforce the minimum dimensions of the container form.
private void OnDockContainerMinSizeChanged (object sender, EventArgs e)
{
int deltaX = Width - _dockContainer1.Width;
int deltaY = Height - _dockContainer1.Height;
MinimumSize = new Size (
_dockContainer1.MinimumSize.Width + deltaX,
_dockContainer1.MinimumSize.Height + deltaY);
}
Points of Interest
The full documentation of this product can be accessed at the site mentioned at the beginning of this article. Please contact us at contact@osec.ro for additional information.
History
- First version of this product was released on 2008.05.07