15/12/2006 12:42
Augusto Ruiz
Más sobre la limpieza de los TextBoxes. La palabra reservada as de C#.
Iba a contestar en un comentario a este post del blog de Juan Fco. Berrocal en el que se comenta cómo limpiar los textboxes de un formulario de una manera sencilla, pero voy a aprovechar para hacer un microartículo (pero micro micro) ;)
Aquí presento lo que me parece una versión un poco más depurada del tema que se trata en el post de forma implícita (manipulación de varios controles de una sola vez). Y debajo explico por qué lo hago así.
private void btnLimpiar_Click(object sender, EventArgs e)
{
limpiarTextBoxes(this);
// Y opcionalmente...
this.textBox1.Focus();
}
private void limpiarTextBoxes(Control parent)
{
TextBox t;
//Limpiar de manera rapida
foreach (Control c in parent.Controls)
{
t = c as TextBox;
if (t != null)
{
t.Clear();
}
if (c.Controls.Count > 0)
{
limpiarTextBoxes(c);
}
}
}
La única diferencia es que en el bucle foreach de la rutina que limpia el texto del TextBox, se hace un casting del Control a TextBox usando la palabra reservada "as" de C#. Esto lo que hace es que si el control es un TextBox (o un derivado de él) obtiene una referencia de tipo TextBox, y si no, devuelve null. Lo bueno es que obtenemos una referencia tipada con la clase que queremos manipular.
Creo que es más claro hacer esto como ejemplo, porque si quisieras llamar a un método o usar una propiedad que sólo implementa la clase TextBox (por ejemplo la propiedad CharacterCasing) y no lo implementa la clase Control, utilizando este código sí que es posible, y con el anterior no...
Hala, pues ya está. ¿A que ha sido realmente micro?
Saludos!
EDITADO: He cambiado el código según la sugerencia de Alejandro Mezcua, para limpiar el TextBox utilizando el método Clear, en vez de Text = "". El motivo lo podéis ver en los comentarios ;)
Archivado en: .NET 2.0,C#
Comparte este post: