miércoles 15 de julio de 2009

Enlazando un ComboBox con un HashTable

En esta ocasión les mostraré de manera sencilla como enlazar un ComboBox con datos que tengamos en un HasTable. Un HashTable es una clase que se define en el espacio de nombres System.Collections que basicamente almacena datos en pares Clave/Valor sirviendo la clave com indice. Para mas información sobre el uso de esta Clase que se incorporo en el Framework 2.0 con la liberación de VS 2005, pueden consultar el siguiente link.

Empezemos con el ejemplo.
Primero, creamos un nuevo proyecto en VS 2005/2008 de tipo windows en esta caso lo desarrolle bajo el lenguaje C#. Luego, en la ventana que aparece escribimos el nombre de nuestro ejemplo y le damos OK. Ya VS se encarga de generar el archivo de solucion por nosotros.
Despues agregamos algunos controles en este caso 3 Labels y 1 ComboBox. El tercer Label no aparece por que no tiene asigando ningun texto, pero es el que nos servira para desplegar la opcion seleccionado en el ComboBox.

Luego de agregar los controles pasamos a la parte de la codificación. Primero, agregamos el siguiente espacio de nombre (namespaces) para poder usar la clase HashTable.
using System.Collections;

Declaramos una variable global de tipo HashTable:

Hashtable lista = new Hashtable();

En el evento Load de nuestro formulario agregamos el código para llenar el Hastable y enlazarlo al comboBox.

BindingSource ls = new BindingSource();


lista.Add("win", "Windows");

lista.Add("lnx", "Linux");

lista.Add("dos", "MS-DOS");

lista.Add("mac", "MAC");

ls.DataSource = lista;

this.comboBox1.DataSource = ls;

this.comboBox1.DisplayMember = "value";

this.comboBox1.ValueMember = "key";

Vamos a entender un poco el código. Primero creamos una variable de tipo BindingSource el cual nos servirá para enlazar nuestro comboBox con el HashTable mediante su propiedad DataSource. Para mas información sobre este componente ver el siguiente link con un ejemplo. Seguidamente usamos el método Add del HashTable para agregar los datos. Como vemos el primer parametro es el que nos serviría como clave y el segundo el valor de lo que queremos desplegar.
Como mencionamos anteriormente asignamos los datos del HashTable al DataSource de la variable ls (de tipo BindingSource).
Ahora solo nos queda asignar los correspondientes valores al comboBox. El DataSource para los datos, el DisplayMember (asignamos el parametro value) para desplegar el dato que queremos mostrar y el ValueMember (asignamos el parametro key) para obtener el valor de la clave para el texto seleccionado.

Ahora en el evento SelectedIndexChanged del ComboBox agregamos el siguiente código para desplegar la opción seleccionada.

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

{

if (comboBox1.SelectedIndex != 0)

{

this.label2.Text = comboBox1.Text + " y su clave es: " + comboBox1.SelectedValue;

}

}


Despues de todo lo que acabamos de mostrar solo nos falta ejecutar nuestro ejemplo.




Como podemos ver, al momento de seleccionar una opción del ComboBox se despliega nuestra opción con su clave asociada. A continuación le agrego el link del ejemplo en C#.

Comentarios