Truco: Vaciar Contenido de los Textbox (Windows Forms)- VB y CSharp


Siguiendo con la serie de trucos… aqui les dejo la forma de limpiar los Textbox de los Windows Forms, por que en muchas ocaciones hemos cometido el groso error de decirle a cada textbox que su valor es “”… lo bueno de este truquillo es que si tiene texto o numero o lo que sea este lo deja vacio..

Espero que les guste.

En Visual Basic:

   1: 'Declaramos nuestro metodo que hara la limpieza de los textbox
   2: Private Sub LimpiarTextBox(ByVal ofrm As Form)
   3:     'hace un chequeo por todos los textbox del formulario
   4:     For Each oControl As Control In ofrm.Controls
   5:         If TypeOf oCobtrol Is TextBox Then
   6:             oControl.Text = ""
   7:         End If
   8:     Next
   9: End Sub
  10:
  11: Private Sub BtnPruebaLimpiarTextBox_Click( _
  12:     ByVal sender As System.Object, _
  13:     ByVal e As System.EventArgs) Handles BtnPruebaLimpiarTextBox.Click
  14:
  15:     Call LimpiarTextBox(Me)
  16:
  17: End Sub

En Visual C#

   1:  // Declaramos nuestro metodo que hara la limpieza de los textbox
   2: private void LimpiarTextBox(Form ofrm)
   3: {
   4:     // hace un chequeo por todos los textbox del formulario
   5:     foreach (Control oControls in ofrm.Controls)
   6:     {
   7:         if (oControls is TextBox)
   8:         {
   9:             oControls.Text = ""; // eliminar el texto
  10:         }
  11:     }
  12: }
  13:
  14: private void BtnPruebaLimpiarTextBox_Click(System.Object sender, System.EventArgs e)
  15: {
  16:     // pasar el formulario
  17:     LimpiarTextBox(this);
  18:
  19: }
Anuncios

31 comentarios el “Truco: Vaciar Contenido de los Textbox (Windows Forms)- VB y CSharp

  1. muy buen post, pero yo tengo un tabcontrol, ya que lo necesito por pestaña, los que tengo en el form, se borran perfecto, pero los que estan dentro del control no, yo puse este codigo a ver si me resultaba pero nada

    Private Sub limpiar(ByVal tabla As TabControl)
    Dim controlar As Control

    For Each controlar In tabla.Controls
    If TypeOf controlar Is TextBox Then
    controlar.Text = “”
    End If
    Next

    End Sub

  2. Con algunos retoques logré cambiar las propiedades text y backcolor, pero no puedo hacerlo con ReadOnly.
    Obviamente la pregunta es ¿cómo puedo modificar también ReadOnly?
    Este es el código que escribí.
    For Each oControl As Control In Me.Controls
    If TypeOf oControl Is TextBox Then
    oControl.Text = “”
    oControl.BackColor = Color.Yellow
    ‘oControl.ReadOnly = False – No se puede hacer
    End If
    Next

  3. Super buenos todos tus aportes mira tengo un problem necesito realizar una aplicacion q tenga herencia, polimorfismo y encapsulamiento me podrias ayudar con algun ejemplo basico para realizar el programa

  4. Hola sbuenas, muy bueno el apoyo gracias Alex!pero qpasaria si los controles textbox stuvieran dentro de un splitcontainer dividio en 2 paneles???porfa ayudame!!!!

  5. Hola, esta pagina esta muy padre

    este metodo esta muy bien. solo tengo una duda

    yo tengo un form en el form tengo un tapcontrol y dentro del tabcontrol tengo varios grupbox con textbox.

    mi pregunta com oseria para poder hacer ese metodo en c sharp

    espero y me puedan ayudar
    gracias

  6. la palabra nothing es mas efectiva
    ya que asi “” , estas mandando un espacio en blanco al cuadro de texto en cambio con nothing asignas que el texbox no contendra absolutamente nada ni un “blank space” o “”:
    ejemplo:
    me.textbox1.text=nothing

  7. Una pregunta interesante, ¿si queremos hacer lo contrario?
    Rellenar todos los textbox de un form, pero no todos con el mismo dato. Cada textbox con un dato de una tabla por ejemplo.
    Agradecería mucho la ayuda porque llevo ya dos días buscando la solución.
    Salu2

  8. el codigo para limpiar textbox funciona bien, pero tengo un problema cuando hago focus al primer control para volver a ingresar un texto, no me permite ingresar mas que un caracter.
    Me pueden ayudar

  9. Aqui esta para VB6 !!! :p

    Private Sub LimpiarTextBox(ByVal ofrm As Form)

    Dim oControl As Control

    For Each oControl In ofrm.Controls
    If TypeOf oControl Is TextBox Then
    oControl.Text = “”
    End If
    Next

    End Sub

  10. ¡Hola Alexander! Encantado de encontrar tu página. Tú código me ha sido de gran utilidad. Sinceramente me parece algo tan simple como eficaz. Es genial.

    Repasando los comentarios anteriores sobre este post. Es cierto, cuando un TextBox esta dentro de un GroupBox no lo limpia. Pero es bastante intuitivo recorrer los controles del GroupBox también. Asi que sin problemas.

    Por ayudar. Dejo el código que borra todos los TextBox, incluídos los que se encuentran dentro de un GroupBox.

    Aquí está:

    ‘Declaramos nuestro metodo que hara la limpieza de los TextBox
    Sub clearControls(ByVal pForm As Form)
    ‘Hacemos un chequeo por todos los controles del Form
    For Each oControl As Control In pForm.Controls
    ‘Si un control del Form resulta ser GroupBox?????????
    If TypeOf oControl Is GroupBox Then
    ‘Hacemos un chequeo por todos los controles del GroupBox
    For Each subControl As Control In oControl.Controls
    ‘Si un control del GroupBox es un TextBox????
    If TypeOf subControl Is TextBox Then
    ‘Entonces borramos su texto
    subControl.Text = “”
    End If
    Next
    End If
    ‘Si un control del Form resulta ser TexBox???????????
    If TypeOf oControl Is TextBox Then
    ‘Entonces borramos su texto
    oControl.Text = “”
    End If
    Next
    End Sub

    Lo dicho. Muchas gracias Alex. Saludos

  11. Este código encontré en otro foro, pero tiene el mismo problema en los GroupBox:

    dim x As Integer
    for x= 0 to Frm.Controls(x).Count-1 ‘Aquí me sale error así que le borré (x)
    If TypeOf Frm.Controls(x) Is TextBox then
    Frm.Controls(x).Text=””
    End If
    Next x

  12. Probé con este código y no me sale:
    Private Sub Limpiar_Cajas(ByVal f As Form, ByVal g As GroupBox)
    ‘recorrer todos los controles del formulario indicado
    For Each c As Control In f.Controls
    If TypeOf c Is TextBox Then
    c.Text = “” ‘eliminar el texto
    End If
    Next
    For Each x As Control In g.Controls
    If TypeOf x Is TextBox Then
    x.Text = “” ‘eliminar el texto
    End If
    Next
    End Sub

    Private Sub btnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNuevo.Click
    Dim x As New GroupBox
    Call Limpiar_Cajas(Me, x)
    Me.txtNombres.Focus()
    End Sub

    La pregunta es ¿Qué le falta??

  13. Hola, gracias de antemano por la respuesta.

    El caso es que, efectivamente el código no funciona en controles como Panel o GroupBox, Ojalá puedan ayudarnos….

    Saludos

  14. Hola Claudio y Souammy: Gracias por visitar mi blog… y que vean de utilidad los tips que publicado…

    Para solucionar sus problemas deben cambiar el tipo de parametro (C#: Form oFor, VB: ByVal oForm as Form) por el nombre del control que esten utilizando, es decir si es un control personalizado deben recorrer los Controles que tiene su Control Personalizado… y si es un GroupBox, GridView o algun control de tipo lista deben pasar como parametro ese control…

    Espero que les sea de ayuda.

    Saludos,

    Alexander Jimenez
    Blog:
    https://alexjimenez.wordpress.com
    Web: http://alexjimenez.info

  15. El codigo funciona a la perfeccion, pero hay un pequeño error: si tenemos algun textbox dentro de un groupbox por ejemplo en el formulario, el mismo no es borrado.

  16. hice un form donde puse varios TextBox normales y varios TextBox definido en un UserControl al llamar la funcion Limpiar() …. me limpiar los textbox normales y no lo de mi controles
    asi tengo mi funcion Limpiar()

    Private Sub Limpiar(ByVal ofrm As Form)
    ”’Tu truco
    For Each oControl As Control In ofrm.Controls
    If TypeOf oControl Is TextBox Then
    oControl.Text = “”
    End If
    Next

    ”’Solo si pongo asi me limpia
    Me.txtCodigo.MiTextBox.Text = “”
    Me.txtNombre.MiTextBox.Text = “”

    EsNuevo = True
    Me.TablaLocal.Clear()
    Me.txtCodigo.MiTextBox.Enabled = True
    Me.txtCodigo.MiTextBox.Focus()
    Me.cmdEliminar.Enabled = False
    Me.MaestroTarjetasTableAdapter.Fill(Me.DataSet.MaestroTarjetas)
    End Sub

    me imagino q no me funcion porq no estoy llamando la instacion de mi control … a ver si me ayudas como tengo q llamar a mi control…

    gracias y mil disculpas por las preguntas pero es que soy nuevo en VB

  17. hola soy de Honduras, Centro America

    me parece excelente el truco lo probe y me funciona perfecto … pero tengo un problema al quererlo usarlo con mis aplicaciones

    yo tengo un UserControl para mis TextBox que uso en los form el user control se llama CampoUserControl.vb y el name del textbox se llama MiTextBox por lo que cuando creo un textbox en mi form le hago referencia a MiTextBox ejemplo

    Me.txtCodigo.MiTextBox.Text=”hola”
    usando mis controles no me funciona la rutina como tiene que ser la syntaxis para que me funcione

    gracias,

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