Export (0) Print
Expand All
1 out of 1 rated this helpful - Rate this topic

ToolStripDropDown Class

Represents a control that allows the user to select a single item from a list that is displayed when the user clicks a ToolStripDropDownButton. Although ToolStripDropDownMenu and ToolStripDropDown replace and add functionality to the Menu control of previous versions, Menu is retained for both backward compatibility and future use if you choose.

Namespace:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)
[ComVisibleAttribute(true)]
[ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)]
public class ToolStripDropDown : ToolStrip

Use the ToolStripDropDown to display drop-down lists of options, such as a color picker.

The following code example uses the ToolStripDropDown and ToolStripDropDownButton classes to make a three-button color picker that changes the foreground color of the form.

		// Declare the drop-down button and the items it will contain. 
		internal ToolStripDropDownButton dropDownButton1;
		internal ToolStripDropDown dropDown;
		internal ToolStripButton buttonRed;
		internal ToolStripButton buttonBlue;
		internal ToolStripButton buttonYellow;


		private void InitializeDropDownButton()
		{
			dropDownButton1 = new ToolStripDropDownButton();
			dropDown = new ToolStripDropDown();
			dropDownButton1.Text = "A";

			// Set the drop-down on the ToolStripDropDownButton.
			dropDownButton1.DropDown = dropDown;

            // Set the drop-down direction.
            dropDownButton1.DropDownDirection = ToolStripDropDownDirection.Left;

            // Do not show a drop-down arrow.
            dropDownButton1.ShowDropDownArrow = false;

			// Declare three buttons, set their foreground color and text,  
			// and add the buttons to the drop-down.
			buttonRed = new ToolStripButton();
			buttonRed.ForeColor = Color.Red;
			buttonRed.Text = "A";

			buttonBlue = new ToolStripButton();
			buttonBlue.ForeColor = Color.Blue;
			buttonBlue.Text = "A";

			buttonYellow = new ToolStripButton();
			buttonYellow.ForeColor = Color.Yellow;
			buttonYellow.Text = "A";
			
			buttonBlue.Click += new EventHandler(colorButtonsClick);
			buttonRed.Click += new EventHandler(colorButtonsClick);
			buttonYellow.Click += new EventHandler(colorButtonsClick);

			dropDown.Items.AddRange(new ToolStripItem[] 
				{ buttonRed, buttonBlue, buttonYellow });
			toolStrip1.Items.Add(dropDownButton1);
		}


		// Handle the buttons' click event by setting the foreground color of the 
		// form to the foreground color of the button that is clicked. 
		private void colorButtonsClick(object sender, EventArgs e)
		{
			ToolStripButton senderButton = (ToolStripButton)sender;
			this.ForeColor = senderButton.ForeColor;
		}

The following code example uses ToolStripControlHost to show a ToolStripDropDown as a TreeView.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Security.Permissions;

public class Form1 : Form
{
    public Form1()
    {
        MyTreeViewCombo treeCombo = new MyTreeViewCombo();
        treeCombo.TreeView.Nodes.Add("one");
        treeCombo.TreeView.Nodes.Add("two");
        treeCombo.TreeView.Nodes.Add("three");
        this.Controls.Add(treeCombo);
    }
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }

    [SecurityPermissionAttribute(
        SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]
    public class MyTreeViewCombo : ComboBox
    {   
        ToolStripControlHost treeViewHost;
        ToolStripDropDown dropDown;
        public MyTreeViewCombo()
        {
            TreeView treeView = new TreeView();
            treeView.BorderStyle = BorderStyle.None;
            treeViewHost = new ToolStripControlHost(treeView);
            dropDown = new ToolStripDropDown();
            dropDown.Items.Add(treeViewHost);
        }

        public TreeView TreeView
        {
            get { return treeViewHost.Control as TreeView; }
        }

        private void ShowDropDown()
        {
            if (dropDown != null)
            {
                treeViewHost.Width = DropDownWidth;
                treeViewHost.Height = DropDownHeight;
                dropDown.Show(this, 0, this.Height);
            }
        }

        private const int WM_USER = 0x0400,
                          WM_REFLECT = WM_USER + 0x1C00,
                          WM_COMMAND = 0x0111,
                          CBN_DROPDOWN = 7;

        public static int HIWORD(int n)
        {
            return (n >> 16) & 0xffff;
        }

        protected override void WndProc(ref Message m)
        {
            if (m.Msg == (WM_REFLECT + WM_COMMAND))
            {
                if (HIWORD((int)m.WParam) == CBN_DROPDOWN)
                {
                    ShowDropDown();
                    return;
                }
            }
            base.WndProc(ref m);
        }

        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (dropDown != null)
                {
                    dropDown.Dispose();
                    dropDown = null;
                }
            }
            base.Dispose(disposing);
        }
    }
}
System.Object
  System.MarshalByRefObject
    System.ComponentModel.Component
      System.Windows.Forms.Control
        System.Windows.Forms.ScrollableControl
          System.Windows.Forms.ToolStrip
            System.Windows.Forms.ToolStripDropDown
              System.Windows.Forms.ToolStripDropDownMenu
              System.Windows.Forms.ToolStripOverflow
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0
Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

ADD
Show:
© 2014 Microsoft. All rights reserved.