Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: SRVAM en 5 Enero 2010, 14:54 pm



Título: [C#] borrar TextBox's en un bucle
Publicado por: SRVAM en 5 Enero 2010, 14:54 pm
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!!


Título: Re: [C#] borrar TextBox's en un bucle
Publicado por: [D4N93R] en 5 Enero 2010, 16:15 pm
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:

Código:
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:

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

o si están dentro de un groupbox:

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

Saludos!


Título: Re: [C#] borrar TextBox's en un bucle
Publicado por: Shell Root en 5 Enero 2010, 18:28 pm
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
  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(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPruebaLimpiarTextBox.Click
  12.     Call LimpiarTextBox(Me)
  13. End Sub
  14.  

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

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

Saludos!


Título: Re: [C#] borrar TextBox's en un bucle
Publicado por: [D4N93R] en 5 Enero 2010, 19:57 pm
Citar
oControls.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í:

Código:
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!


Título: Re: [C#] borrar TextBox's en un bucle
Publicado por: Shell Root en 5 Enero 2010, 20:42 pm
Amigo 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!


Título: Re: [C#] borrar TextBox's en un bucle
Publicado por: [D4N93R] en 5 Enero 2010, 21:12 pm
AH jaaajja yo apenas si leí eso rápido jajaja

Por su pollo? ajjajaja ta buena xD


Título: Re: [C#] borrar TextBox's en un bucle
Publicado por: Shell Root en 5 Enero 2010, 21:25 pm
Por su pollo? ajjajaja ta buena xD
Simon!

http://www.youtube.com/watch?v=Q_SjqRAO3f8


Título: Re: [C#] borrar TextBox's en un bucle
Publicado por: SRVAM en 7 Enero 2010, 00:13 am
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  ;-)