Esta documentación está archivada y no tiene mantenimiento.

ComboBox (Clase)

Representa un control de cuadro combinado de Windows.

Espacio de nombres: System.Windows.Forms
Ensamblado: System.Windows.Forms (en system.windows.forms.dll)

[ComVisibleAttribute(true)] 
[ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)] 
public class ComboBox : ListControl
/** @attribute ComVisibleAttribute(true) */ 
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) */ 
public class ComboBox extends ListControl
ComVisibleAttribute(true) 
ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) 
public class ComboBox extends ListControl
No aplicable.

Un ComboBox muestra un campo de edición de cuadro de texto combinado con un ListBox y permite al usuario seleccionar elementos de la lista o escribir texto nuevo. El comportamiento predeterminado de ComboBox es mostrar un campo de edición con una lista desplegable oculta. La propiedad DropDownStyle determina el estilo que mostrará el cuadro combinado. Puede escribir un valor que proporcione una lista desplegable sencilla, en que la lista se muestra siempre; un cuadro de lista desplegable, en que la parte de texto no se puede editar y es necesario presionar una flecha para ver el cuadro de lista desplegable; o el cuadro de lista desplegable predeterminado, en que la parte de texto se puede editar y el usuario debe presionar la tecla de flecha para ver la lista. Para que se muestre una lista que el usuario no puede editar, use un control ListBox.

Para agregar objetos a la lista en tiempo de ejecución, asigne una matriz de referencias a objetos con el método AddRange. De este modo la lista muestra el valor de cadena predeterminado para cada objeto. Puede agregar objetos individuales con el método Add.

Además de la funcionalidad de presentación y selección, ComboBox también proporciona funciones que permiten agregar de manera eficaz elementos al control ComboBox y buscar texto en los elementos de la lista. Con los métodos BeginUpdate y EndUpdate puede agregar un gran número de elementos al ComboBox sin que el control se tenga que volver a dibujar cada vez que se agrega un elemento a la lista. Los métodos FindString y FindStringExact permiten buscar un elemento de la lista que contenga una cadena de búsqueda específica.

Estas propiedades se pueden usar para administrar el elemento de la lista seleccionado actualmente, la propiedad Text para especificar la cadena que se muestra en el campo de edición, la propiedad SelectedIndex para obtener o establecer el elemento actual y la propiedad SelectedItem para obtener o establecer una referencia al objeto.

NotaNota:

Si tiene un ListBox, ComboBox o CheckedListBox en una página con formularios Windows Forms de base y desea modificar las colecciones de cadenas de esos controles en un formulario derivado, las colecciones de cadenas de estos controles del formulario base deben estar vacías. Si las colecciones de cadenas no están vacías, se establecen como de sólo lectura cuando se deriva otro formulario.

En el ejemplo siguiente se muestra una aplicación completa que ilustra cómo se puede usar el método Add para agregar elementos a un ComboBox, el método FindString para buscar elementos en un ComboBox y los métodos BeginUpdate y EndUpdate para agregar un gran número de elementos a un ComboBox de forma eficaz.

using System;
using System.Windows.Forms;

namespace Win32Form1Namespace {
    
    
    public class Win32Form1 : System.Windows.Forms.Form {
        private System.Windows.Forms.Button addButton;
        private System.Windows.Forms.TextBox textBox2;
        private System.Windows.Forms.Button addGrandButton;
        private System.Windows.Forms.ComboBox comboBox1;
        private System.Windows.Forms.Button showSelectedButton;
        private System.Windows.Forms.TextBox textBox1;
        private System.Windows.Forms.Button findButton;
        private System.Windows.Forms.Label label1;
        
        public Win32Form1() {
            this.InitializeComponent();
        }
        
        [System.STAThreadAttribute()]
        public static void Main() {
            System.Windows.Forms.Application.Run(new Win32Form1());
        }
        
        private void InitializeComponent() {
            this.addButton = new System.Windows.Forms.Button();
            this.textBox2 = new System.Windows.Forms.TextBox();
            this.addGrandButton = new System.Windows.Forms.Button();
            this.comboBox1 = new System.Windows.Forms.ComboBox();
            this.showSelectedButton = new System.Windows.Forms.Button();
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.findButton = new System.Windows.Forms.Button();
            this.label1 = new System.Windows.Forms.Label();
            this.addButton.Location = new System.Drawing.Point(248, 32);
            this.addButton.Size = new System.Drawing.Size(40, 24);
            this.addButton.TabIndex = 1;
            this.addButton.Text = "Add";
            this.addButton.Click += new System.EventHandler(this.addButton_Click);
            this.textBox2.Location = new System.Drawing.Point(8, 64);
            this.textBox2.Size = new System.Drawing.Size(232, 20);
            this.textBox2.TabIndex = 6;
            this.textBox2.Text = "";
            this.addGrandButton.Location = new System.Drawing.Point(8, 96);
            this.addGrandButton.Size = new System.Drawing.Size(280, 23);
            this.addGrandButton.TabIndex = 2;
            this.addGrandButton.Text = "Add 1,000 Items";
            this.addGrandButton.Click += new System.EventHandler(this.addGrandButton_Click);
            this.comboBox1.Anchor = ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 
                        | System.Windows.Forms.AnchorStyles.Right);
            this.comboBox1.DropDownWidth = 280;
            this.comboBox1.Items.AddRange(new object[] {"Item 1",
                        "Item 2",
                        "Item 3",
                        "Item 4",
                        "Item 5"});
            this.comboBox1.Location = new System.Drawing.Point(8, 248);
            this.comboBox1.Size = new System.Drawing.Size(280, 21);
            this.comboBox1.TabIndex = 7;
            this.showSelectedButton.Location = new System.Drawing.Point(8, 128);
            this.showSelectedButton.Size = new System.Drawing.Size(280, 24);
            this.showSelectedButton.TabIndex = 4;
            this.showSelectedButton.Text = "What Item is Selected?";
            this.showSelectedButton.Click += new System.EventHandler(this.showSelectedButton_Click);
            this.textBox1.Location = new System.Drawing.Point(8, 32);
            this.textBox1.Size = new System.Drawing.Size(232, 20);
            this.textBox1.TabIndex = 5;
            this.textBox1.Text = "";
            this.findButton.Location = new System.Drawing.Point(248, 64);
            this.findButton.Size = new System.Drawing.Size(40, 24);
            this.findButton.TabIndex = 3;
            this.findButton.Text = "Find";
            this.findButton.Click += new System.EventHandler(this.findButton_Click);
            this.label1.Location = new System.Drawing.Point(8, 224);
            this.label1.Size = new System.Drawing.Size(144, 23);
            this.label1.TabIndex = 0;
            this.label1.Text = "Test ComboBox";
            this.ClientSize = new System.Drawing.Size(292, 273);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {this.comboBox1,
                        this.textBox2,
                        this.textBox1,
                        this.showSelectedButton,
                        this.findButton,
                        this.addGrandButton,
                        this.addButton,
                        this.label1});
            this.Text = "ComboBox Sample";
        }
        
        private void addButton_Click(object sender, System.EventArgs e) {
           comboBox1.Items.Add(textBox1.Text);
        }

        private void addGrandButton_Click(object sender, System.EventArgs e) {
            comboBox1.BeginUpdate();
            for (int i = 0; i < 1000; i++) {
                comboBox1.Items.Add("Item 1" + i.ToString());
            }
            comboBox1.EndUpdate();
        }

        private void findButton_Click(object sender, System.EventArgs e) {
            int index = comboBox1.FindString(textBox2.Text);
            comboBox1.SelectedIndex = index;
        }

        private void showSelectedButton_Click(object sender, System.EventArgs e) {
            int selectedIndex = comboBox1.SelectedIndex;
            Object selectedItem = comboBox1.SelectedItem;

            MessageBox.Show("Selected Item Text: " + selectedItem.ToString() + "\n" +
                            "Index: " + selectedIndex.ToString());
        }
    }
}

package Win32Form1Namespace;

import System.*;
import System.Windows.Forms.*;

public class Win32Form1 extends System.Windows.Forms.Form
{
    private System.Windows.Forms.Button addButton;
    private System.Windows.Forms.TextBox textBox2;
    private System.Windows.Forms.Button addGrandButton;
    private System.Windows.Forms.ComboBox comboBox1;
    private System.Windows.Forms.Button showSelectedButton;
    private System.Windows.Forms.TextBox textBox1;
    private System.Windows.Forms.Button findButton;
    private System.Windows.Forms.Label label1;

    public Win32Form1()
    {
        this.InitializeComponent();
    } //Win32Form1

    /** @attribute System.STAThreadAttribute()
     */
    public static void main(String[] args)
    {
        System.Windows.Forms.Application.Run(new Win32Form1());
    } //main
    
    private void InitializeComponent()
    {
        this.addButton = new System.Windows.Forms.Button();
        this.textBox2 = new System.Windows.Forms.TextBox();
        this.addGrandButton = new System.Windows.Forms.Button();
        this.comboBox1 = new System.Windows.Forms.ComboBox();
        this.showSelectedButton = new System.Windows.Forms.Button();
        this.textBox1 = new System.Windows.Forms.TextBox();
        this.findButton = new System.Windows.Forms.Button();
        this.label1 = new System.Windows.Forms.Label();
        this.addButton.set_Location(new System.Drawing.Point(248, 32));
        this.addButton.set_Size(new System.Drawing.Size(40, 24));
        this.addButton.set_TabIndex(1);
        this.addButton.set_Text("Add");
        this.addButton.add_Click(new System.EventHandler(this.addButton_Click));
        this.textBox2.set_Location(new System.Drawing.Point(8, 64));
        this.textBox2.set_Size(new System.Drawing.Size(232, 20));
        this.textBox2.set_TabIndex(6);
        this.textBox2.set_Text("");
        this.addGrandButton.set_Location(new System.Drawing.Point(8, 96));
        this.addGrandButton.set_Size(new System.Drawing.Size(280, 23));
        this.addGrandButton.set_TabIndex(2);
        this.addGrandButton.set_Text("Add 1,000 Items");
        this.addGrandButton.add_Click(new System.EventHandler(
            this.addGrandButton_Click));
        this.comboBox1.set_Anchor(System.Windows.Forms.AnchorStyles.Bottom
            | System.Windows.Forms.AnchorStyles.Left
            | System.Windows.Forms.AnchorStyles.Right);
        this.comboBox1.set_DropDownWidth(280);
        this.comboBox1.get_Items().AddRange(new Object[] 
            { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" });
        this.comboBox1.set_Location(new System.Drawing.Point(8, 248));
        this.comboBox1.set_Size(new System.Drawing.Size(280, 21));
        this.comboBox1.set_TabIndex(7);
        this.showSelectedButton.set_Location(new System.Drawing.Point(8, 128));
        this.showSelectedButton.set_Size(new System.Drawing.Size(280, 24));
        this.showSelectedButton.set_TabIndex(4);
        this.showSelectedButton.set_Text("What Item is Selected?");
        this.showSelectedButton.add_Click(new System.EventHandler(
            this.showSelectedButton_Click));
        this.textBox1.set_Location(new System.Drawing.Point(8, 32));
        this.textBox1.set_Size(new System.Drawing.Size(232, 20));
        this.textBox1.set_TabIndex(5);
        this.textBox1.set_Text("");
        this.findButton.set_Location(new System.Drawing.Point(248, 64));
        this.findButton.set_Size(new System.Drawing.Size(40, 24));
        this.findButton.set_TabIndex(3);
        this.findButton.set_Text("Find");
        this.findButton.add_Click(new System.EventHandler(
            this.findButton_Click));
        this.label1.set_Location(new System.Drawing.Point(8, 224));
        this.label1.set_Size(new System.Drawing.Size(144, 23));
        this.label1.set_TabIndex(0);
        this.label1.set_Text("Test ComboBox");
        this.set_ClientSize(new System.Drawing.Size(292, 273));
        this.get_Controls().AddRange(new System.Windows.Forms.Control[]
            { this.comboBox1, this.textBox2, this.textBox1,
            this.showSelectedButton, this.findButton, this.addGrandButton,
            this.addButton, this.label1 });
        this.set_Text("ComboBox Sample");
    } //InitializeComponent

    private void addButton_Click(Object sender, System.EventArgs e)
    {
        comboBox1.get_Items().Add(textBox1.get_Text());
    } //addButton_Click

    private void addGrandButton_Click(Object sender, System.EventArgs e)
    {
        comboBox1.BeginUpdate();
        for (int i = 0; i < 1000; i++) {
            comboBox1.get_Items().Add("Item 1" + ((Int32)i).ToString());
        }
        comboBox1.EndUpdate();
    } //addGrandButton_Click

    private void findButton_Click(Object sender, System.EventArgs e)
    {
        int index = comboBox1.FindString(textBox2.get_Text());
        comboBox1.set_SelectedIndex(index);
    } //findButton_Click

    private void showSelectedButton_Click(Object sender, System.EventArgs e)
    {
        int selectedIndex = comboBox1.get_SelectedIndex();
        Object selectedItem = comboBox1.get_SelectedItem();
        MessageBox.Show("Selected Item Text: " + selectedItem.ToString() 
            + "\n" + "Index: " + ((Int32)selectedIndex).ToString());
    } //showSelectedButton_Click

En el siguiente ejemplo de código se utilizan ToolStripControlHost y ComboBox para mostrar un objeto ToolStripDropDown como TreeView.

Los miembros estáticos públicos (Shared en Visual Basic) 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.

Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 2.0, 1.0
Mostrar: