This documentation is archived and is not being maintained.

How to: Control the Toolbox

The ToolBox object is represented in the Visual Studio automation model by the following objects and collections:

Object Name


ToolBox object

Represents the Toolbox.

ToolBoxTabs collection

Represents all tabs in the Toolbox.

ToolBoxTab2 object

Represents a tab in the Toolbox.

ToolBoxTab3 object

Represents a tab in the Toolbox.

ToolBoxItem2 collection

A collection containing all items in a tab of the Toolbox.

ToolBoxItem object

Represents a single item in a tab of the Toolbox.

By using these objects and collections, you can:

  • Add a tab to the Toolbox (Add method).

  • Activate a tab in the Toolbox (Activate method).

  • Delete a tab from the Toolbox (Delete method).

  • Add an item to the Toolbox (Add method).

  • Select an item in the Toolbox (Select method).

  • Delete an item from a tab in the Toolbox (Delete method).

  • Change the Task List presentation to Icon view or List view (ListView property).

In addition to controlling the contents of the Toolbox, you can also control its characteristics, such as width and height. For more information, see How to: Change Window Characteristics.


The dialog boxes and menu commands you see might differ from those described in Help depending on your active settings or edition. These procedures were developed with the General Development Settings active. To change your settings, choose Import and Export Settings on the Tools menu. For more information, see Visual Studio Settings.

This example demonstrates how to reference and use the various members of the Toolbox automation model. This example creates a new Toolbox tab, adds a few items to it (including a .NET component), then deletes one of them. Optionally, you can delete the new tab as well. For more information about how to run the example, see How to: Compile and Run the Automation Object Model Code Examples.

Using System.Windows.Forms;
public void OnConnection(object application,
 Extensibility.ext_ConnectMode connectMode, object addInInst, ref
 System.Array custom)
    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    // Pass the applicationObject member variable to the code example.

public void ToolboxExample( DTE2 dte ) 
    ToolBox tlBox = null; 
    ToolBoxTabs tbxTabs = null; 
    ToolBoxTab3 tbxTab = null; 
    ToolBoxItems tbxItems = null; 
    ToolBoxItem2 tbxItem = null; 

        // Create an object reference to the IDE's ToolBox object and
        // its tabs.
        tlBox = (ToolBox )( dte.Windows.Item(
 Constants.vsWindowKindToolbox ).Object ); 
        tbxTabs = tlBox.ToolBoxTabs; 

        // Add a new tab to the Toolbox and select it.
        tbxTab = (ToolBoxTab3)tbxTabs.Add( "New ToolBox Tab" ); 

        // Add new items to the new Toolbox tab. This shows two
        // different ways to index the Toolbox tabs. The third item
        // added is a .NET component that contains a number of 
        // Web-related controls.
        tbxTab.ToolBoxItems.Add( "Text Item", "Hello world",
        tbxTab.ToolBoxItems.Add( "HTML Item", "Hello world"
, vsToolBoxItemFormat.vsToolBoxItemFormatHTML ); 
        // Replace the <Path and name of a .NET dll>
        // with a path to a .NET dll file.
        tbxTabs.Item( "New Toolbox Tab" ).ToolBoxItems.Add
( "DotNET Component",
 "<Path and name of a .NET dll>",
 vsToolBoxItemFormat.vsToolBoxItemFormatDotNETComponent ); 

        // Use the ToolboxItems collection to access all the 
        // items under a ToolBox tab.
        tbxItems = tbxTab.ToolBoxItems; 

        // List the number of ToolboxItems in a ToolBoxTab.
        MessageBox.Show( "Number of items in " +
 tbxTabs.Item( 1 ).Name + " tab: " + tbxItems.Count); 
        // Select the second item in the ToolboxItems collection and 
        // delete it.
        // Comment the following lines out, if you do not want to
        // delete the controls.
        tbxItems.Item( 2 ).Select(); 
        MessageBox.Show( "Number of items in " 
+ tbxTabs.Item( 1 ).Name + " tab: " + tbxItems.Count); 
        tbxTabs.Item( "New ToolBox Tab" ).Delete(); 
        MessageBox.Show( "Tab deleted."); 
    catch ( System.Exception ex ) 
        MessageBox.Show( "ERROR: " + ex.Message); 

Adding a COM object that must be registered to the Toolbox attempts to register the COM component. The registration fails if you are not logged in as an administrator (or a member of the Administrators group), and the COM object is not added to the Toolbox.

You cannot browse for and add unregistered COM components to the Toolbox regardless of your level of permissions.