ASánchezDíaz

Autoaprendiendo .NET y otras cosas


C# Windows.Forms – Cómo llenar un ComboBox desde una lista

El control ComboBox de C# permite mostrar una lista desplegable con varias opciones, entre las que el usuario de nuestra aplicación puede elegir.

Podemos añadir opciones (ítems) al control de forma manual si conocemos exactamente las opciones disponibles, es decir, cuándo las opciones que deberá mostrar son limitadas y conocidas, por ejemplo, supongamos que hemos desarrollado una aplicación que, entre otras cosas, almacena clientes.

A la hora de añadir un cliente nuevo a la base de datos, uno de los campos que introducimos es el campo Sexo, así que perfectamente podemos llenar el ComboBox manualmente, introduciendo dos ítems Hombre y Mujer.

Asumiendo que el ComboBox ya haya sido añadido desde el diseñador de formularios y que su nombre sea comboSexo, podemos crear un método que se encargue de llenar el ComboBox:

private void LlenarComboSexo()
{
    //Vaciar comboBox para que los items que vamos a añadir no se repitan
    comboSexo.Items.Clear();

    //Incluir dos items Hombre y Mujer
    comboSexo.Items.Add(new KeyValuePair<string, string> ("Hombre","Hombre"));
    comboSexo.Items.Add(new KeyValuePair<string, string> ("Mujer","Mujer"));
}

No hemos apoyado en la clase KeyValuePair que, tal y como aparece en la referencia de C#, es una estructura que representa un par clave-valor, aunque tenemos más opciones.

Lo primero que hemos hecho es vaciar el comboBox, ya que si no lo hacemos, lo que conseguiremos con este método es añadir opciones al final de la lista de opciones, con lo que obtendríamos resultados repetidos:

comboSexo.Items.Clear();

Cada ítem del ComboBox maneja por así decirlo dos valores, el texto que se muestra y un valor asociado. A estos valores podemos acceder después en algún punto del código para obtener el texto o valor elegido por el usuario por ejemplo.

Centrándonos en el objetivo de esta entrada, supongamos ahora que tenemos una lista de países que queremos mostrar en un ComboBox, para que el usuario elija un país.

Asumamos que ya tenemos implementados varias clases:

– La clase Pais, cuyas propiedades, entre otras, serán: Id y Nombre
– Una lista List llamada listaPaises, que ya hemos llenado con objetos de la clase País
– Nuestro ComboBox, llamado comboPaises

Nuestro método ahora sería:

private void LlenarComboPaises()
{
//Vaciar comboBox
comboPaises.DataSource = null;

//Asignar la propiedad DataSource
comboPaises.DataSource = listaPaises;

//Indicar qué propiedad se verá en la lista
comboPaises.DisplayMember = "Nombre";

//Indicar qué valor tendrá cada ítem
comboPaises.ValueMember = "Id";
}

Ya no necesitamos saber cuáles son los elementos que necesitamos añadir al comboBox a priori, este método lo hará automáticamente.

Lo primero que hacemos en este caso es anular la propiedad DataSource (origen de datos) para reasignarla desde cero.

Una vez asignada a listaPaises, sólo nos falta indicar que propiedad de la clase Pais se mostrará como texto y cual cómo valor.

He supuesto que estáis familiarizados con el manejo de ComboBoxes y sabéis para qué puede ser útil indicar texto y valor de cada ítem.

Deja un comentario

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