[C#] borrar TextBox's en un bucle

Iniciado por SRVAM, 5 Enero 2010, 14:54 PM

0 Miembros y 1 Visitante están viendo este tema.

SRVAM

buenas de nuevo a todos!!

me gustaria saber como puedo borrar 6 textbox en un bucle pero solo con una linea de codigo.
he probado a hacer un array de objetos donde meto los textbox pero no es posible hacerlo. ni tampoco se puede hacer como en visual basic 6, que podias crear matrices de objetos y asi borrarlos todos en un bucle de golpe.
no se si esto es posible hacerlo en C#, yo creo que no, pero a lo mejor alguien aqui sabe como haberlo.

espero que podais ayudarme.

saludos a todos!!
C# Programmer

-Estudiante MCTS .NET Framework 3.5-

[D4N93R]

Claro que es posible,

Y no es muy dificil, voy a codear acá así que no aseguro que compile jaja:


Supongamos que ya tienes los controles en un arreglo/vector/matriz y se llama m_textBoxesArray:

foreach(TextBox t in m_textBoxesArray)
   t.Clear();


:D así de fácil,

Si no tienes los controles en una variable, entonces los sacas de el container en dónde se encuentren, ejemplo, si están tirados en el form:

foreach(Control t in this.Controls)
{
     if(t is TextBox)
        ((TextBox)t).Clear();
}


o si están dentro de un groupbox:

foreach(Control t in this.mygroupbox.Controls)
{
     if(t is TextBox)
        ((TextBox)t).Clear();
}


Saludos!

Shell Root

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

Aqui les dejo la forma de limpiar los Textbox de los Windows Forms, por que en muchas ocasiones 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.

VB:
Código (vbnet) [Seleccionar]
'Declaramos nuestro metodo que hara la limpieza de los textbox
Private Sub LimpiarTextBox(ByVal ofrm As Form)
     'hace un chequeo por todos los textbox del formulario
     For Each oControl As Control In ofrm.Controls
         If TypeOf oCobtrol Is TextBox Then
             oControl.Text = ""
         End If
     Next
End Sub

Private Sub BtnPruebaLimpiarTextBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPruebaLimpiarTextBox.Click
     Call LimpiarTextBox(Me)
End Sub


C#:
Código (c#) [Seleccionar]

// Declaramos nuestro metodo que hara la limpieza de los textbox
private void LimpiarTextBox(Form ofrm){
     // hace un chequeo por todos los textbox del formulario
     foreach (Control oControls in ofrm.Controls){
         if (oControls is TextBox){
             oControls.Text = ""; // eliminar el texto
         }
     }
}

private void BtnPruebaLimpiarTextBox_Click(System.Object sender, System.EventArgs e){
     // pasar el formulario
     LimpiarTextBox(this);
}


Fuente: http://alexjimenez.wordpress.com/2008/01/25/truco-vaciar-contenido-de-los-textbox-windows-forms-vb-y-csharp/

Saludos!
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

[D4N93R]

CitaroControls.Text = "";
Amigo Sheel Root, "" es mala practica, además si quieres hacer una función que limpie controles de una colección lo mejor es pasar como parámetro un ControlCollection.

En vez de usar "" es mejor utilizar String.Empty.

y la función quedaría así:

private void LimpiarTextBox(Control.ControlCollection controls){
     // hace un chequeo por todos los textbox del formulario
     foreach (Control oControls in ofrm.Controls){
         if (oControls is TextBox){
             oControls.Text = ""; // eliminar el texto
         }
     }
}

private void BtnPruebaLimpiarTextBox_Click(System.Object sender, System.EventArgs e){
     // pasar el formulario
     LimpiarTextBox(this.Controls);
}



ya que si los controles están dentro de otro contenedor, no los agarraria..

Claro si quieres limpiar todos, lo mejor es hacer una funcion recursiva..


Saludos!

Shell Root

Cita de: D4N93R en  5 Enero 2010, 19:57 PMAmigo Sheel Root, "" es mala practica
Por su pollo, eso mismo me pregunté, uso las "" pero en Aspx.Net. Además el code no es mio... Mira la fuente...

Saludos!
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

[D4N93R]

AH jaaajja yo apenas si leí eso rápido jajaja

Por su pollo? ajjajaja ta buena xD

Shell Root

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

SRVAM

jaja gracias por la respuesta :D

no habia caido yo en usar el bucle foreach xDD vengo del VB6 y claro, eso de los objetos indexados es una mala costumbre... pero bueno, todos los dias se aprende algo ajaja

thanks  ;-)
C# Programmer

-Estudiante MCTS .NET Framework 3.5-