IPToolbox: A VS2005-like Toolbox






4.90/5 (46 votes)
May 24, 2006
4 min read

244281

7035
A Visual Studio 2005-like ToolBox control which supports almost all features of the original: drag'n'drop, renaming, hiding tabs, items, and disabling items
- Download demo project - 51.3 Kb
- Download source of demo project- 83.6 Kb
- Download component source - 64.1 Kb
- Download Library Documentation - 673 Kb
|
|
|
Introduction
While working on my own Forms designer, I used a Toolbox from another article by Giordio Santini. However, when I saw the Toolbox in VS2005 and, after unsuccessful trials to find something like it on the Internet, I decided to make my own. That is what I've done. This control is derived directly from System.Windows.Forms.Control
without using any other controls or components except ScrollBar
. All drawing is made by myself and it is divided into three parts: the drawing of the whole toolbox, the single tab and the item.
Using the code
This component is fully supported by the VS designer. Just add a reference to the compiled DLL and add the toolbox or HostToolbox
to your form. Alternatively, create it using the following code:
private IP.Components.Toolbox toolbox1;
toolbox1 = new IP.Components.Toolbox();
yourForm.Controls.Add(toolbox1);
You have a wide variety of settings for customizing the toolbox appearance, starting from the height of the tabs and the items, to the colors which are used for the selected item or tab, the hovered item, selection borders, and others. For more details, see the Toolbox Appearance category in the toolbox properties. Starting from version 1.2 of this component, both the Toolbox control and the Tab object implement the ITab
interface. It provides support for multilevel Tabs and non-categorized Items because interface defines three primary properties:
Categories
- a collection of Tabs; you could make changes to this collection at design-time and they would be displayed immediately on the controlItems
- a collection of items in a category or non-categorized items of the toolboxOwner
- an owner of the object; it is always Null for Toolbox control
|
|
In the Toolbox category, you can find more properties:
CreateGeneralCategory
- used to mimic the VS2005 toolbox; it creates an empty tab at run-time with the propertyAllowDelete
set tofalse
, by defaultItemMenu
- contains theContextMenuStrip
menu object, which is shown when the user right-clicks on any enabledItem
; I've added the default menu, but you can change it and set your ownTabMenu
- like anItemMenu
, contains a menu which would be displayed when the user right-clicks on aTab
; I've also added a default menu
Each Tab
object has its own properties, which include:
Text
- caption of the tabOpened
,Visible
- properties say what they meanAllowDelete
- if this property is set totrue
, then the tab cannot be deleted from the toolbox; it can be deleted only programmatically by settingAllowDelete = false
Selected
- at run-time, you can determine if the tab is currently selected.
Also, Tab
has a readonly
field: PointerItem
. This is an Item
that is always added to a Tab
at first place and does not get added to the Items
collection. Thus, it cannot be removed. As with Tab
, Item
objects also have properties: Text
, Image
, Tooltip
, Enabled
, Visible
, and Selected
. I've also added the properties BackColor
and ForeColor
, but haven't used them. If you want, you can inherit from the Toolbox.Item
class, override the OnPaint
method and use those properties for drawing before adding your items to the tabs. For programmers, I've added many public and protected methods and events, including:
- Public
Toolbox.Save
/Toolbox.SaveXml
andToolbox.Load
/Toolbox.LoadXml
for serializing/deserializing the state of a toolbox - Public
Tab.SortItems
for sorting items by alphabetical order - Public
Tab.Select
/Item.Select
for selecting tabs/items in a program - Protected method
OnSelectedChanged
and public eventSelectedChanged
for both tabs and items - Public
Tab.EnsureVisible
/Item.EnsureVisible
for scrolling to tab/item - Protected methods for handling
Paint
,MouseDown
,MouseUp
events on tabs and items - Protected method
Tab.OnToggleTab
and public eventTab.Toggle
for handling the toggling of a tab
...and others.
Terms and conditions
The IPToolbox control is provided as free software with source code provided. You can freely use it in your applications, commercial or non-commercial. Ivan Popok, the author of the control, owns the copyright of the control and is NOT responsible for any damage to your application caused by using this control, directly or indirectly.
History
- 05/24/2006 - v.1.0
- 10/10/2006 - v.1.1
- Added missing
SelectItem
event andSelectedItem
property - Added the
ShowPointer
property that enables hiding of the pointer - Added the
AutoScroll
property and theScrollView
method for synchronized scrolling of the Toolbox and other controls - Added the
TransparentColor
property for theItem
class - Rewrote the
HitTest
method - Now uses the
ToolboxService
class from .NET instead of my own implementation - Added gradient background drawing and support for background image
- Added comments for all
public
andprotected
properties
- Added missing
- 10/25/2006 - v.1.2
- Added multilevel tabs (see
AllowNestedTabs
property) - Added placing items directly on the Toolbox (see
AllowToolboxItems
property) - Added
OnClick
andOnDoubleClick
protected methods forTab
andItem
objects - Added
ColorStyle.None
enumeration member (seeTabColorStyle
property) - Fixed drawing of the
Item
image - Fixed showing of
TextBox
for renaming
- Added multilevel tabs (see
- 03/23/2007 - v.1.2.1
- Fixed saving the state of
CreateGeneralTab
property - Fixed serialization and deserialization of the nested tabs and toolbox items
- Fixed adding
Tab
object to its own collection - Added
Tag
property forTab
andItem
classes - Some other minor fixes
- Fixed saving the state of
- 05/25/2007 - v.1.3
- Re-engineered serialization/deserialization of
Item
s - Applied antialiasing
- Re-engineered serialization/deserialization of