Developer's Diary

23 septiembre, 2010

Curso C# – Controles Básicos II

Continuamos con el siguiente capitulo de los controles basicos para winforms. En la anterior entrega, veíamos las principales caracteristicas dentro de los controles que son propiedades, métodos y eventos heredados desde la clase Control.

Durante este segundo capitulo veremos como usar varios de los controles que ayer enumerábamos estos son:

– Button

– CheckBox

– ComboBox

– DateTimePicker

– Label

– ListBox

Cada uno de ellos tiene ciertas propiedades y capacidades que debemos dominar para crear aplicaciones amigables con los usuarios que vayan a usarlas. Además de enumerar las distintas propiedades que tienen, también vamos a aconsejar la mejor manera de usarlos. Ya que tenemos que tener en cuenta que en ocasiones el uso de un control u otro con funcionalidades parecidas puede convertirse en una buena o mala elección, dependiendo de su uso final.

Me explico, podríamos tener una lista de valores que el usuario debe seleccionar, en el caso de que sepamos que esa lista sea pequeña, elegiríamos el uso de un combobox, pero, si la lista es elevada, lo más lógico sería cambiar ese cuadro por un ListBox. No sé si alguien ha tenido que seleccionar un objeto mediante un combobox con más de cinco elementos, puede resultar todo un suplicio.

Vamos a comenzar a ver cada uno de los controles que nos corresponden durante este capitulo del curso.

Button

Este control va a ser uno de nuestros pilares a la hora de diseñar las distintas ventanas de una aplicación. El botón es el control principal de interacción entre usuario y aplicación. Siempre que se pulse un botón será para que un usuario haga que la aplicación haga algo o solicite algo.

Es evidente que podemos hacer aplicaciones sin usar este control, ya que para dar una mayor diseño a la aplicación se puede usar también el control de PictureBox, pero ya hablaremos de ello un poco más adelante.

El uso más común del button, es enlazar el evento Click que veíamos en la anterior entrega, para que produzca algún efecto dentro de nuestra aplicación.  Podemos agregarle más funcionalidad si usamos los eventos MouseDown y MouseUp. Haciendo que el control haga algo cuando pulsamos y continúe posteriormente cuando lo soltamos.  Si lo hacemos así, perderíamos un poco el control de lo que ocurre en la aplicación, porque el evento MouseDown, como comentábamos ayer se produce cuando se pulsa el botón, pero no sabemos en que momento exacto soltará el usuario el mismo.

Otro consejo, podría ser si sabemos que la tarea que va a realizar nuestro botón es tediosa podríamos preparar los elementos cuando el ratón entre dentro de las dependencias del mismo, con el evento MouseEnter y podríamos liberar la memoria cuando se produzca el MouseHover de ese botón.

Estos consejos pueden llegar a ser útiles, pero debemos usarlos con mucho cuidado y detenimiento porque también pueden hacer que la aplicación se haga algo menos mantenible, además de que se pueden provocar errores innecesarios.

Finalmente, usaremos este control siempre que nos sea necesario que el usuario interactúe con nuestra aplicación, ya que necesitamos algo que sea el detonante de la petición de nuestro usuario.

CheckBox

Un CheckBox, permite al usuario marcar opciones dentro de la aplicación. Este control contendrá la propiedad Checked, que será un simple booleano que podremos modificar nosotros mediante código o el usuario si se lo permitimos. Siendo el valor True que se encuentra marcado y el valor False desmarcado.

Estos valores nos pueden permitir redirigir nuestra aplicación a diferentes ámbitos según nos convenga.

Este control se debe usar cuando existan diferentes posibilidades y todas puedan ser marcadas. En el caso que solo querramos un valor posible, se debería usar el control RadioButton, permitiendo múltiples opciones dentro de este control.

ComboBox

El cuadro de selección no deja de ser una lista para que el usuario pueda seleccionar cada uno de los elementos que desee. Todos los controles que contengan una lista, poseeran una propiedad de Items.  Esta lista es de Objects por lo tanto puede contener todo tipo de objetos, con el consiguiente inconveniente de que entrará el concepto de Boxing / Unboxing.  Ya tendremos una entrada un poco más explicita de este concepto, pero a grandes instancias debemos saber lo siguiente de este tema.

Boxing –> Es cuando un tipo de objeto, como un int o un string es recogido por la clase Object de .Net. Por lo tanto lo que hacemos cuando agregamos un elemento de la lista de nuestro combobox o de un listbox.

Unboxing –> Es cuando ese Object lo recogemos para convertirlo en un tipo de dato. Por ejemplo cuando usamos uno de esos elementos de nuestro ComboBox.

Voy a hacer un pequeño ejemplo de código para que se entienda un poco mejor, aunque vuelvo a repetir que es un tema del que hablaremos más detenidamente.

private void Add_Element(string elemento)

{

comboBox1.Items.Add(elemento); //Aquí estamos realizando Boxing

}

private string Catch_Element(int n)

{

return comboBox1.Items[n].ToString();  //Realizamos el unboxing.

}

o

private int Catch_Element(int index)

{

return (int)comboBox1.Items[index]; //Realizamos el unboxing.

}

Como podemos ver, el boxing es cuando cualquier tipo de valor es transformado al object, que es principalmente del que heredan todos los tipos de valor. Mientras que el unboxing es cuando recuperamos uno de esos datos en tipo de valor.

Este concepto es completamente transparente para el programador, pero es interesante saber que cosas hace exactamente nuestra aplicación sin que nosotros nos demos cuenta. Otro detalle a tener en cuenta es que cuando se realiza unboxing, se puede provocar una excepción si no está controlado correctamente, ya que podemos estar convirtiendo un objeto que inicialmente era un string, por ejemplo a un valor int lo que provocaría una excepción, ya que una cadena de texto no puede ser convertida en un entero.

Después de este pequeño corte, para comprender el concepto de Boxing y Unboxing, que como vuelvo a incidir haremos un post para explicar este concepto y otros más.

Teniendo una propiedad llamada Items donde poseemos todos los valores que vayamos agregando a nuestra lista, mediatne la propiedad Add. Es como las colecciones de las que ya hablaremos más adelante.

Otras propiedades interesantes a tener en cuenta en los ComboBox ,  son SelectedIndex y SelectedItem. La primera propiedad nos permite comprobar el indice seleccionado, es decir, el número del elemento de la lista que hayamos tomado, en el caso de que no haya ninguno seleccionado el valor será -1. Mediante SelectedItem, obtendremos el objeto que se encuentre seleccionado en ese momento, como si lo recogieramos mediante la colección, pero sabremos cual es el seleccionado.

Dentro del combobox tenemos también disitintos eventos para poder controlar lo que ocurre dentro del control, DropDown y DropDownClosed, nos permitirá saber en que momento desplegamos el combobox y cuando cerramos el cuadro de desplazamiento.

Finalmente también tenemos el evento SelectedIndexChanged, este evento saltará cuando marquemos una opción dentro del cuadro.

Usar el ComboBox es razonable cuando tenemos una lista pequeña, no es recomendable usar este tipo de objeto, si tenemos una ingente cantidad de elementos. Porque en ese caso el cuadro de desplazamiento será muy largo y al usuario le será tedioso seleccionar un elemento de la lista. No es recomendable usar este control, cuando nos excedemos de más de cinco elementos ya que el cuadro sería demasiado largo.

DateTimePicker

Siempre que trabajemos con fechas, el uso del control datetimepicker nos permitirá trabajar con ellas con soltura. Mediante el datetimepicker no solo podemos cambiar las fechas, si no también la hora. Para cambiar el diseño del datetimepicker y poder elegir como queremos que se muestre la fecha, debemos modificar el valor de la propiedad Format.

Las propiedades MinDate y MaxDate nos permiten establecer en que fecha nos podremos mover con nuestro control. Para saber la fecha que tenemos seleccionada usamos la propiedad Value.

Siempre que trabajemos con fechas y el usuario deba modificarlas, será interesante incluir este tipo de control.

Label

Este control no deja de ser una etiqueta, que podemos incluir dentro de nuestro formulario. No tiene ninguna propiedad extraña, solo debemos tener en cuenta la propiedad Text, que nos permitirá modificar los valores que tenga de texto. Además también podemos controlar fuente y color de la misma.

Este objeto se usará cuando tengamos que incluir un texto informativo. Debemos tener en cuenta que este texto no puede ser copiado por el usuario.

ListBox

Terminando la entrega del curso por hoy. Tenemos el ListBox. Este control es muy similar a caracteristicas al ComboBox. Tenemos una colección llamada Items, que modificamos igual que en el anterior control, los mismos eventos y propiedades. Exceptuando el DropDown y DropDownClosed, que son exclusivos del ComboBox.

La única diferencia es que ocupará más espacio dentro de nuestro formulario, ya que no se desplegara como ocurre en el anterior control.

Como indicamos antes, es más recomendable usar ListBox cuando los elementos de la lista sobrepasan los 5 a 7 elementos. Ya que dentro de un combobox al superar ese número de elementos resulta un completo suplicio el trabajar con él.

Hasta aquí la segunda entrega del uso de los controles básicos. En los próximos días publicaré el último articulo de esta parte del curso para pasar posteriormente con el mayor control de todos, el Formulario y su control

Saludos y no dudeis en comentar si os ocurre alguna duda.

Anuncios

2 comentarios »

  1. […] Curso C# – Controles Basicos III Filed under: .net, Curso C#, Programación, Tips, Windows Mobile — Etiquetas: colordialog c#, containers c#, contenedores c#, controles .net, controles c#, controls c#, cuadros de dialogo c#, curso .net, Curso C#, curso controles basicos, openfiledialog c#, picturebox c#, progressbar c#, savefiledialog c#, textbox c# — 3nk1 @ 7:14 AM Finalmente llegamos a la ultima entrega de controles basicos, para tener una nocion de lo que podemos hacer con ellos y poder usarlos en nuestras aplicaciones de WinForms. Si has llegado ahora y no has visto las dos entregas anteriores puedes acceder a la primera desde aqui y a la segunda desde aqui. […]

    Pingback por Curso C# – Controles Basicos III « Developer's Diary — 21 octubre, 2010 @ 7:14 AM

  2. […] – Estructuras de control. – Estructuras de repetición. – Manejo de los controles básicos I , II , III. – Varios formularios – Tipos de datos. – Creación de clases. – Creación de clases II. – […]

    Pingback por Curso C# « Developer's Diary — 3 enero, 2011 @ 7:31 AM


RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: