17 de agosto de 2011

Utilizar Recursividad para limpiar controles en C#

Hola que tal a todos los que me leen xD se que casi nadie de igual forma escribo algo que tal vez les sirva a la hora de programar.

Bueno como todos sabemos en programación siempre buscamos la manera de simplificar las cosas y de esa manera facilitar tanto nuestra programación como también nuestro código.

En esta ocasión veremos un pequeño código de como limpiar nuestros controles o ponerles un valor especifico a un tipo de controles sabemos que en ocasiones tenemos varios controles del mismo tipo y llega el momento de modificarlos poniéndoles un valor especifico ejemplo:

tal vez tengamos diez controles de tipo TextBox en nuestro formulario y necesitamos que se queden vacíos todos, la manera tradicional de hacerlo es de esta manera.

textbox1.Text="";
textbox2.Text="";
textbox3.Text="";
textbox4.Text="";
textbox5.Text="";
textbox6.Text="";
textbox7.Text="";
textbox8.Text="";
textbox9.Text="";
textbox10.Text="";
el problema es que si tienes 10 formulario con 10 TextBox cada uno ya te imaginaras cuantas  lineas escribirás para hacer una limpieza o dejarlos vacíos

Aquí es donde podemos usar nuestros trucos o tips de programación y lo veremos a continuación con estas lineas de código


public void Nuevo()
{
            foreach (Control c in this.Controls)//recorremos los controles del formulario
            {
                LimpiarControles(c);
            }  
}
private void LimpiarControles(Control c)
{
            if (c.GetType().Name == "UltraTextEditor")//verificamos si es el tipo de control que queremos limpiar
            {
                c.Text = string.Empty;//le asignamos el valor a nuestro control
            }
            else
            {
                foreach (Control child in c.Controls)//verificamos si nuestro control tiene controles hijos
                    LimpiarControles(child); //aqui aplicamos la recursividad
            }        
}


Tengo dos clases uno el primero mi clase que utilizare para limpiar los controles sabemos que todos los controles heredan de Control de esa manera podremos manejar todos los controles que tenemos en nuestro formulario usamos un foreach que no recorrerá todos los controles que tiene nuestro formulario allá es donde entra la recursividad ya que si tenemos controles de tipo contenedor y dentro de ellos tenemos otros controles no los podremos manejar ni limpiar desde código.

Ejemplo si tenemos un GroupBox en nuestro formulario y dentro de el tenemos varios controles al querer usar nuestra clase LimpiarControles no tomara en cuenta los controles que estén contenidos en el GroupBox(Ya  hasta yo ya no me entiendo xD) por eso llamamos nuestra clase dentro de la misma.
y el método de limpieza de nuestro controles es una simple sentencia IF como vemos la clase Control tiene un metodo que es GetType()  el cual tiene la propiedad Name en donde aremos la comparación con el nombre de nuestros control en mi ejemplo uso un control de tipo UltraTextEditor que es lo que utilizo en vez de TextBox normales verifico si es de ese tipo y uso su propiedad Text para limpiarlo o ponerle un valor predetermina asi de esa manera no tendré que escribir uno por uno para poder limpiar mis controles del mismo tipo.
La clase LimpiarControles podemos ponerla en una clase aparte de nuestro formulario y hacerla publica para usar la misma en todos nuestros formularios así simplificamos nuestro código si usamos recursividad.

bueno es pero que les sirva este pequeño código saludos hasta el siguiente entrada



8 comentarios:

SredP dijo...

Bueno no se si serán muchos, pero te dejo este comentario para que sepas que al menos 1 si que te lee.

Trabajo como programador en una empresa especializada en creación apps y siempre es bueno leer cosillas que quizás a mi no se me ocurren.

Un saludo!

JONYLBCD dijo...

Saludos Screp jejeje es bueno que te allá servido mi pequeño tutorial realmente la satisfacion no viene tanto en que te leen muchos si no que uno aprecie el trabajo que se haces estoy buscando que me ayuden a postear nuevos temas si te animas hay me escribes a mi correo saludos

Anónimo dijo...

Hola, soy nuevo en esto pero me intesa lo publicad:
el ejecutarlo me manda un error :
la palabra clave "this" no es validad en una propiedad, método o inicializador de campo estatico.
espero me ayudes.
Gracias.

JONYLBCD dijo...

Hola que tal anonimo solo dejame saber en que parte o en que linea te muestra esto del error y en la brevedad posible yo lo revisare por que te da ese error

Luis Cabañas dijo...

hola amigo,muy bueno el tutorial,yo he echo uno parecido solo que los controles los meto dentro de un list,luego creo el objeto y en un ciclo for les cambio la propiedad Text a "" y asi los hago saludos desde Ticul

Luis Cabañas dijo...

hola amigo,muy bueno el tutorial,yo he echo uno parecido solo que los controles los meto dentro de un list,luego creo el objeto y en un ciclo for les cambio la propiedad Text a "" y asi los hago saludos desde Ticul

Luis Cabañas dijo...

hola amigo,muy bueno el tutorial,yo he echo uno parecido solo que los controles los meto dentro de un list,luego creo el objeto y en un ciclo for les cambio la propiedad Text a "" y asi los hago saludos desde Ticul

JONYLBCD dijo...

Que bueno Luis el método podría servir tambien para inahabilitar controles

Social Icons