Some days ago as I coded the HelloWorld in C#, there was darkness around me. After crawling through all the articles from CodeProject, there was light. A few days later I got my first version of magic library, from this time my HelloWorld applications looks cool.
Now, much time later, spent millions of hours coding C# in my spare time and on my job, I still use the magic library. With the knowledge gained from using commercial products like Syncfusion Essentiel Tools I felt it's time to write a component for Visual Studio which provides easy access to the great docking features of Magic Library.
- You control the docking behavior of your controls in the properties (
- Automatic State Persistence takes care of user customization. The customized layouts are stored in the Isolated Storage.
- Accessible wrapped
DockingManager, all features of future releases of
DockingManager are reachable.
- Needed code is generated by the ©Visual Studio Designer.
- .NET friendly design with IExtenderProvider.
The component implements the IExtenderProvider interface and wraps a
Crownwood.Magic.Docking.DockingManager. The IExtenderProvider extends the controls on your
Form with a few of the
Crownwood.Magic.Docking.Content properties. At run time the component manages the
Content settings for each control and attaches the controls to the wrapped
Using the code
Before you begin, make sure your project has a valid reference to the Magic Library. Go to the Toolbox window, right-click and select Customize Toolbox from the context menu. In the Customize Toolbox dialog, go to the .NET Framework Components tab and select the DockingManagerExtender.dll assembly that you just compiled. Now drop the
DockingManagerExtender component to your form.
The component provides the following:
Public Instance Properties
|Enable or disable the Automatic State Persistence feature. If enabled, the customized docking settings made by the user are persistent by User/Domain/WorkingArea |
|Gets or sets the object to which the docking manager instance is attached|
|The wrapped |
Crownwood.Magic.Docking.DockingManager. Direct access to all properties.
|Sets or gets the |
Control for which the docking windows will not be allowed to dock inside of the specified control.
|Sets or gets the |
Control for which docking windows will not be allowed to dock outside of the specified control.
|Gets or sets the flag indicating that the appearance is defined as |
VisualStyle.Plain and this
PlainTabBorder property is defined then a full dumped border is drawn around the docking window content.
|Gets or sets the |
VisualStyle which is used to draw content.
Public Instance Methods
|Restores the docking configuration.|
|Reset Automatic State Persistence. Changes takes effect after restarting application.|
|Stores the docking configuration.|
Please make sure that the
ContainerControl property points to your form, otherwise the component cannot work properly.
Select one of your controls on this form, hit F4 and scroll down to the end in the
PropertyGrid. Now you should see new properties like these ones.
After you set
true, you could change the other properties. This is important, cause if the control is not dock enabled, the other properties are not valid.
If you like to know more about these properties, please refer directly to Magic Docking - VS.NET Style.
|Enables and disables the docking for the control.|
|Enables and disables the close button of the docking window. |
|Dock style for the control.|
|Text displayed in docking control title. |
|Icon displayed in tabbed/hide mode.|
|Indicates if tabbed docking is preferred.|
|Text displayed in tabbed/hide mode.|
After enabling docking for your controls, hit F5 to start debugging. If everything went right the controls are docked, finish.
There are three classes which where used to build this component. For detailed view, please refer to the NDOC generated Help File.
Crownwood.Magic.Docking.Content and extends it with needed properties.
DockingManagerConverter provides a
TypeConverter for the
Crownwood.Magic.Docking.DockingManager for design time. It extends the controls on your form with properties, which defines the docking behavior at run time.
- The order of the controls in the
InitializeComponent() method is important for docking order. If you like to dock two controls (A,B) in tabbed mode on the left side, and another (C) not tabbed on the left upper side, please make sure control (C) comes before (A,B), otherwise the docking order is not correct.
- Every time you change the docking properties with
true, you do not see the changes made directly. The
DockingManager overrides the changes made with the stored settings. To solve this problem you should not use
AutomaticStatePersistence for development.
- 29.10.2003 - Version 1.1 released which supports
- 27.05.2003 - bug fixed, generated
IsolatedStorage path longer than 260 chars in some cases, updated downloads.
- 24.05.2003 - experimental release