Hoy un compañero mío preguntaba en el buzz como podía recorrer los controles de su WinForm con C#. Entre 2 estuvimos dando una solución rápida y a ciegas que creo funcionaba
, pero en el mismo buzz le comentaba que un tiempo atrás ya había escrito el código y prometía pasarle lo que había hecho (bueno de yapa se viene el artículo en devtroce).
Ésta tarea es particularmente sencilla realizarla con dotNet por ello que me tomo la particularidad de escribirla en los 2 lenguajes C# y VB Net. No sólo recorreremos todos los controles sino también preguntaremos si es de un tipo especifico – en este caso un TextBox - y lo inhabilitaremos si cumple con la condición. También cubriremos la posibilidad que un control sea GroupBox y recorreremos todo lo que contenga, si hay dentro algún TextBox, será inhabilitado.
C#.Net
1 2 3 4 5 6 7 8 9 10 11 12 13 | foreach (Control controlChotex in this.Controls) { if (controlcito is TextBox) controlcito.Enabled = false; else if (controlcito.HasChildren) { foreach (Control controlChild in controlcito.Controls) { if (controlChild is TextBox) controlChild .Enabled = false; } } } |
Visual Basic.Net
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Dim controlcito As Control Dim controlChild As Control For Each controlcito In Me.Controls If TypeOf controlcito Is TextBox Then controlcito.Enabled = False ElseIf controlcito.HasChildren Then For Each controlChild In controlcito.Controls If TypeOf controlChild Is TextBox Then controlChild.Enabled = False End If Next End If Next |








en
en
en
Funciona con DateTimePicker!
He aquí el código, es un form con 14 DateTimePickers:
foreach (Control miControl in this.Controls)
{
if (miControl is DateTimePicker)
miControl.Text = “06:00:00″;
}