Click here to Skip to main content
13,353,106 members (57,175 online)
Click here to Skip to main content
Add your own
alternative version


36 bookmarked
Posted 13 May 2005

A Basic Chooser-Style DropDown ToolBar Button

, 13 May 2005
Rate this:
Please Sign up or sign in to vote.
This articles shows how to implement a basic, chooser-style dropdown ToolBar button.

Screen Shot


This article shows how to implement a basic, chooser-style dropdown toolbar button. It seemed very strange to me that this simple widget was nowhere to be found in Visual Studio .NET, given that it exists in almost every single Windows application.

The closest you can get is a dropdown button that looks like this:

Visual Studio Dropdown Button

This is fine if the purpose of the button is two-fold (to perform some action in addition to presenting a choice), however sometimes you simply want to present a choice to the user. A good example is implementing a view configuration chooser button, such as can be found in the Windows file explorer. Here, allowing the user to click on the button makes no sense at all.

Using the code

This widget is implemented as a UserControl, which can be included in any C# Windows project. To use the widget, simply drag and drop it onto your form, and place it on top of an existing, docked toolbar. You will need both a ContextMenu, and an ImageList on your form, which can be associated with the widget in its property sheet:

Property Page

The code to implement the button is quite simple - although it took a while to get it right... The key is to use the MouseDown event to bring up the context menu, and to use the Paint event of the control to set the 'Pushed' state of the button to 'false', when the menu goes away. In order to force the Paint event to fire, you have to call Invalidate() on the control before bringing up the context menu.

private void On_toolBar_MouseDown(object sender, 
                    System.Windows.Forms.MouseEventArgs e)
    // Do nothing if there is no context menu
    if (this.m_contextMenu == null)

    // Ensure we clicked on the toolbar button
    if (!this.w_toolBarButton.Rectangle.Contains(new 

    // Bring up the context menu
    if (!this.w_toolBarButton.Pushed)
        this.w_toolBarButton.Pushed = true;
                    new System.Drawing.Point(0,22));

private void On_ToolbarDropDownButton_Paint(object sender, 
                    System.Windows.Forms.PaintEventArgs e)
    this.w_toolBarButton.Pushed = false;


This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


About the Author

Canada Canada
No Biography provided

You may also be interested in...

Comments and Discussions

GeneralDropDownMenu in ToolbarButtons Pin
Maximilian Seifert10-Oct-05 4:06
memberMaximilian Seifert10-Oct-05 4:06 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web03 | 2.8.180111.1 | Last Updated 13 May 2005
Article Copyright 2005 by JRS
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid