Saltar al contenido

Cómo crear un menú desplegable en WinForms y C#

Si te encuentras con alguna parte que no comprendes puedes dejarnos un comentario y te responderemos rápidamente.

Solución:

Si desea un valor y un título (etiqueta), cree una clase apropiada

class ComboItem

    public int ID  get; set; 
    public string Text  get; set; 

En el ComboBox, luego configura el DisplayMember propiedad a Text y el ValueMember propiedad a ID.


El DropDownStyle del ComboBox determina su comportamiento. DropDownStyle.DropDown permite al usuario escribir texto. Con DropDownStyle.DropDownList el usuario solo puede seleccionar elementos de la lista.


Puedes llenar el ComboBox como esto:

myCombo.DataSource = new ComboItem[] 
    new ComboItem ID = 1, Text = "One" ,
    new ComboItem ID = 2, Text = "Two" ,
    new ComboItem ID = 3, Text = "Three" 
;

El DataSource puede ser cualquier tipo de enumerable.

Puede recuperar la identificación seleccionada de esta manera

int id = (int)myComboBox.SelectedValue;

Tenga en cuenta que puede agregar cualquier tipo de elemento al ComboBox. Si no especifica el DisplayMember y ValueMember propiedades, ComboBox utiliza el ToString método del objeto para determinar el texto que se muestra y puede recuperar el elemento seleccionado (valor no seleccionado) a través del SelectedItem propiedad.

Si agrega objetos de este tipo…

class Person

    public int PersonID  get; set 
    public string FirstName  get; set; 
    public string LastName  get; set; 

    public override string ToString()
    
        return FirstName + " " + LastName;
    
 

… al ComboBox, puede recuperar el elemento seleccionado de esta manera

Person selectedPerson = (Person)myComboBox.SelectedItem;
int personID = selectedPerson.PersonID;

El ComboBox mostrará el nombre y apellido de las personas.

Debe configurar una fuente de datos para su Combobox, es mejor si crea una clase y pasa una lista de Objetos, por ejemplo:

private void Init()

    List items = new List();
    items.Add(new Item()  Text = "displayText1", Value = "ValueText1" );
    items.Add(new Item()  Text = "displayText2", Value = "ValueText2" );
    items.Add(new Item()  Text = "displayText3", Value = "ValueText3" );

    comboBox1.DataSource = items;
    comboBox1.DisplayMember = "Text";
    comboBox1.ValueMember = "Value";



public class Item

    public Item()  

    public string Value  set; get; 
    public string Text  set; get; 

Pon el Init() método en su FormName_Load(object sender, EventArgs e).

Parece que el valor es solo una referencia al elemento seleccionado, ¿correcto? Luego puede usar el índice del cuadro combinado, lo hace mucho más fácil.

No estoy seguro de si sus elementos se conocen antes de la compilación, en caso afirmativo, simplemente agréguelos en el diseñador, propiedades del cuadro combinado. De lo contrario, puede agregarlos dinámicamente simplemente haciendo:

        List items = new List()  "item1", "item2" ;
        comboBox1.DataSource = items;

Y para saber qué ítem está seleccionado:

        int index = comboBox1.SelectedIndex;

Aquí tienes las comentarios y calificaciones

Si aceptas, puedes dejar una noticia acerca de qué te ha gustado de esta reseña.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *