ToolStripDropDown (Clase) (System.Windows.Forms)

Cambiar vista:
Sin script
Biblioteca de clases de .NET Framework
ToolStripDropDown (Clase)

Actualización: noviembre 2007

Representa un control que permite al usuario seleccionar un único elemento de una lista que se muestra cuando el usuario hace clic en un control ToolStripDropDownButton. Aunque los controles ToolStripDropDownMenu y ToolStripDropDown reemplazan y agregan funcionalidad al control Menu de versiones anteriores, se conserva Menu a efectos de compatibilidad con versiones anteriores y uso futuro, en su caso.

Espacio de nombres:  System.Windows.Forms
Ensamblado:  System.Windows.Forms (en System.Windows.Forms.dll)
Sintaxis

Visual Basic (Declaración)
<ComVisibleAttribute(True)> _
<ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)> _
Public Class ToolStripDropDown _
	Inherits ToolStrip
Visual Basic (Uso)
Dim instance As ToolStripDropDown
C#
[ComVisibleAttribute(true)]
[ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)]
public class ToolStripDropDown : ToolStrip
Visual C++
[ComVisibleAttribute(true)]
[ClassInterfaceAttribute(ClassInterfaceType::AutoDispatch)]
public ref class ToolStripDropDown : public ToolStrip
J#
/** @attribute ComVisibleAttribute(true) */
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) */
public class ToolStripDropDown extends ToolStrip
JScript
public class ToolStripDropDown extends ToolStrip
Comentarios

Utilice el control ToolStripDropDown para mostrar listas desplegable de opciones, como un selector de colores.

Ejemplos

El ejemplo de código siguiente utiliza las clases ToolStripDropDown y ToolStripDropDownButton para crear un selector de colores de tres botones que cambia el color de primer plano del formulario.

Visual Basic
' Declare the drop-down button and the items it will contain.
Friend WithEvents dropDownButton1 As ToolStripDropDownButton
Friend WithEvents dropDown As ToolStripDropDown
Friend WithEvents buttonRed As ToolStripButton
Friend WithEvents buttonBlue As ToolStripButton
Friend WithEvents buttonYellow As ToolStripButton

Private Sub 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"

    dropDown.Items.AddRange(New ToolStripItem() {buttonRed, buttonBlue, buttonYellow})
    toolStrip1.Items.Add(dropDownButton1)
End Sub

' Handle the buttons' click event by setting the foreground color of the
' form to the foreground color of the button that is clicked.
Public Sub colorButtonsClick(ByVal sender As [Object], ByVal e As EventArgs) _
    Handles buttonRed.Click, buttonBlue.Click, buttonYellow.Click
    Dim senderButton As ToolStripButton = CType(sender, ToolStripButton)
    Me.ForeColor = senderButton.ForeColor

End Sub


C#
		// 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;
		}


En el siguiente ejemplo de código se utiliza ToolStripControlHost para mostrar el control ToolStripDropDown como un TreeView.

Visual Basic
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Imports System.Security.Permissions

Public Class Form1
   Inherits Form

   Public Sub New()
      Dim treeCombo As New MyTreeViewCombo()
        treeCombo.MyTreeView.Nodes.Add("one")
        treeCombo.MyTreeView.Nodes.Add("two")
        treeCombo.MyTreeView.Nodes.Add("three")
      Me.Controls.Add(treeCombo)
   End Sub

   <STAThread()>  _
   Shared Sub Main()
      Application.EnableVisualStyles()
      Application.SetCompatibleTextRenderingDefault(False)
      Application.Run(New Form1())
   End Sub

    <SecurityPermissionAttribute( _
         SecurityAction.LinkDemand, Flags:=SecurityPermissionFlag.UnmanagedCode)> _
   Public Class MyTreeViewCombo
        Inherits ComboBox

        Private treeViewHost As ToolStripControlHost
        Private Shadows dropDown As ToolStripDropDown

        Public Sub New()

            Dim treeView As New TreeView()
            treeView.BorderStyle = BorderStyle.None
            treeViewHost = New ToolStripControlHost(treeView)
            dropDown = New ToolStripDropDown()
            dropDown.Items.Add(treeViewHost)
        End Sub

        Public ReadOnly Property MyTreeView() As TreeView
            Get
                Return treeViewHost.Control '
            End Get
        End Property

        Private Sub ShowDropDown()
            If Not (dropDown Is Nothing) Then
                treeViewHost.Width = DropDownWidth
                treeViewHost.Height = DropDownHeight
                dropDown.Show(Me, 0, Me.Height)
            End If
        End Sub

        Private Const WM_USER As Integer = &H400
        Private Const WM_REFLECT As Integer = WM_USER + &H1C00
        Private Const WM_COMMAND As Integer = &H111
        Private Const CBN_DROPDOWN As Integer = 7

        Public Shared Function HIWORD(ByVal n As Integer) As Integer
            Return (n >> 16) And &HFFFF
        End Function

        Protected Overrides Sub WndProc(ByRef m As Message)
            If m.Msg = WM_REFLECT + WM_COMMAND Then
                If HIWORD(CType(m.WParam, Integer)) = CBN_DROPDOWN Then
                    ShowDropDown()
                    Return
                End If
            End If
            MyBase.WndProc(m)
        End Sub

        Protected Overrides Sub Dispose(ByVal disposing As Boolean)
            If disposing Then
                If Not (dropDown Is Nothing) Then
                    dropDown.Dispose()
                    dropDown = Nothing
                End If
            End If
            MyBase.Dispose(disposing)
        End Sub
    End Class
End Class


C#
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);
        }
    }
}


Jerarquía de herencia

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
Seguridad para subprocesos

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
Plataformas

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

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
Información de versión

.NET Framework

Compatible con: 3.5, 3.0, 2.0
Vea también

Referencia

Otros recursos