Limpiar informacion de los controles (TextBox’s) Rapidamente

Esto es un tips muy facilito de como limpiar informacion en los controles de un formulario este caso el TextBox.


 Como todos saben en .NET podemos limpiar informacion de un TextBox con un metodo llamado “Clear ( )” y tambien lo podemos hacer de esta manera: TextBox1.Text = ” “;


Pero que pasa si tenemos muchos TextBox’s en nuestro formulario, entonces tendriamos que ir uno por uno agregandole el metodo “Clear ( )”. Pero con foreach lo podemos hacer de la siguiente manera.


El codigo en C# seria el siguiente.


private void btnLimpiar_Click(object sender, EventArgs e)


{




    //Limpiar de manera rapida


    foreach (Control c in this.Controls)


    {


      if (c is TextBox)


        {


           c.Text = “”;


           //Enfoco en el primer TextBox


            this.textBox1.Focus();


        }


     }


}


y listo!!!, ya todos los controles estaran listos para insertar informacion dentro de ellos.


NOTA: Se que muchos aqui se sabian esto, para el que se lo sabia pues lo ha repasado y el que no, pues lo ha aprendido.


Saludos desde Rep. Dom. [;)]

35 comentarios en “Limpiar informacion de los controles (TextBox’s) Rapidamente”

  1. y porq no hacerlo de la siguiente manera

    //Limpiar de manera rapida
    foreach (Control c in this.Controls)
    {
    if (c is TextBox)
    {
    c.Text = “”;
    }
    }
    //Enfoco en el primer TextBox
    this.textBox1.Focus();

    en cada iteracion solo limpias el control, y luego pones el foco en el primero, sino en cada iteracion realizas 2 acciones y una de ellas (me parece) no es necesaria …

    pero puede q me equivoque 😀

    Saludos

  2. Esto tiene un pequeño problema. En el momento en el que en el formulario tengas un contenedor – como un panel – con textboxes, éstos no se limpiarán…

    Yo haría lo siguiente:

    private void btnLimpiar_Click(object sender, EventArgs e)
    {
    limpiarTextBoxes(this);

    // Y opcionalmente…
    this.textBox1.Focus();
    }

    private void limpiarTextBoxes(Control parent)
    {
    //Limpiar de manera rapida
    foreach (Control c in parent.Controls)
    {
    if (c is TextBox)
    {
    c.Text = “”;
    }
    if (c.Controls.Count > 0)
    {
    limpiarTextBoxes(c);
    }
    }
    }

  3. Tu solución es la buena Bruno… bueno ahora vendrá Juan Fco y dirá: -¡Ah! ¿Cómo? ¡¡Pero si yo había puesto lo del Focus DESPUES de cerrar la llave!!

    (seguro que por eso no entendió lo que le comentaste en el primer reply 😉 )

    Saludos

  4. Bueno…

    Lo que Bruno expone tiene sentido no he dicho que no, se podria hacer de esa manera, aunque la solucion que expone Augusto esta muy buena, porque hay mayor control.

    Saludos.

  5. Bueno que conste que Augusto posteó miestras yo estaba respondiendo… no estoy menospreciando su solución ni nada de eso. 😛

    De hecho es un buen ejemplo, de hecho uno de los clásicos, de recursividad.

    Saludos

  6. Estas discusiones y colaboración es lo que ayuda a que cada uno de los programadores mejoren cada dia y las aplicaciones sean mas rápidas… me parece que con este material se debe implementar una clase para validaciones y acciones rutinarias como limpieza de controles en la cual nos despreocupemos de hacer esto nuevamente.
    Esta clase la implementare en mis nuevos proyectos e inicialmente tendría dos métodos uno con contenedores y otro sin ellos.
    Muchas gracias por estos aportes y si piensan que se podría hacer de una forma mas eficiente me gustaría leer sus comentarios.

  7. Primero que nada…Felicitaciones a JuanFco por escribir en Geeks.ms y la motivacion que obtenemos de su dedicacion a estos temas.

    Estoy de acuerdo con el ultimo codigo de Augusto, sin embargo, considero que el foco en el primer textbox asume que ese control se llama ‘TextBox1’. Una mejor manera seria:

    // Encontrar el primer TextBox y activar el focus

    int ctrl = 0;
    Control c;

    while(true)
    {
    c = this.Controls.Items(ctrl);

    if (c is TextBox)
    {
    c.Focus();
    break;
    }
    else
    ctrl++;
    }

  8. Saben la logica que le ponen tal vez para una aplicacion simple sea una solución pero si se dan cuenta ustedes solo pones this.Controls o me.Controls en su for o foreach pero que pasa si en el formularios ha N Contenedoras y dentro de esos otros contenedores es mas y dentro de esos contenedores hay muchso mas controles entoces ya no funcionaria su this.Controls o me.Controls en su for o foreach por que los controles se encuentra dentro de los contenedores y dime que limpiarias con ese metodo que estas aplicando tal vez limpiarias los texbox u otros pero que pasarian con los texbox que se encuentran en los contenedores ….. hay alguien q tenga la solucion ?

  9. Saludos,

    Felicitaciones por la nota. Un favor, perdón el abuso, cómo puedo hacer funcionar en Asp.Net?

    Probé esta rutina pero tengo el siguiente mensaje

    en c.Text = “”

    “System.Web.UI.WebControls.WebControl no contiene un a definición para Text”

    Anticipo mi agradecimiento por su ayuda.

    Saludos

    Lenin

  10. Hola buenas tardes ejecuto su código Sr. Augusto Ruiz y si funciona pero en pantalla los textbox siguen llenos, uso visual studio 2003, asp.net

  11. Ahi tenemos otro modo de hacer lo mismo.

    Solo es cuestion de llamar al método y enviarle como parametro el formulario o panel, en fin…. espero que sea util

    ///

    /// limpia todos los textBoxes de un control (Por ejemplo de un formulario, panel, entre otros)
    ///

    /// es el control que contiene los textBox a limpiar
    public void tbxClearText(Control control)
    {
    Control.ControlCollection Cc = control.Controls;

    for (int i = 0; i < Cc.Count; i++) { if (Cc[i].Controls.Count > 0)
    {
    tbxClearText(Cc[i]);//se hace recursivo mientras un control tenga mas subcontroles(ejm: los panel dentro de un formulario)
    }
    else
    {
    if(Cc[i] is TextBox)
    {
    Cc[i].Text = “”;
    }
    }
    }
    }

  12. No me funca me dice que c.text no existe o si me falta alguna directiva using.
    estas son las que tengo :
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using System.Data.SqlClient;

  13. private void limpiarTextBoxes(Control parent)
    {

    //Limpiar de manera rapida

    foreach (Control c in parent.Controls)
    {

    if (c is TextBox)
    {
    TextBox txt = (TextBox)c;
    txt.Text = “”;
    }

    if (c.Controls.Count > 0)
    {

    limpiarTextBoxes(c);

    }

    }

    }

  14. Ignacio Morales, tu codigo funciona de maravilla lo aplique para limpiar cajas de texto contenidas en un tab y todo fue de maravilla,
    A todos Gracias por sus aportes..
    Saludos…

  15. Yo quiero limpiar pero usando una clase de tal manera que yo pueda llamar el la funcion, metodo o lo que sea, desde cualquier formulario y asi no tener que volver a escribir la misma programacion para cada formulario que vaya creando

  16. por fin encontre algo bueno..
    mi problema es que quiero habilitar unos textBox con un boton, de acuerdo a la cantidad que yo le indique dentro de otro textBox para posteriormente hacer unos calgulos que yo necesite..

  17. lo que quiero hacer es esto:

    tengo en total 15 textBox desabilitadas y 15 label desabilitados

    al darle que me habilite 10 me debe habilitar 10 textBox y 10 label para posteriormete

    hacer una operacion
    por decir

    en la textBox tengo le pongo un 2 y en el label tengo un 5 me los va a muntiplicar ..

    esto lo va haciendo por los 10 que tengo habilitados y al final me realizara una suma de estos..

    alguin me puede ayudar??

  18. el codigo de Ronald creo que me podria servir pero no se como pasarle ese parametro Control control cuando me lo pide.

    public void tbxClearText(Control control)

Deja un comentario

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