post icon

Recorrer los controles de un formulario con C# & VB.Net

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 :P, 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

Comentarios desde Facebook:

  1. avatar
    JCrash COLOMBIA Google Chrome Windows
    14 marzo 2014 at 14:27 #

    Hi Bro, soy nuevo en VS.net y me salvaste la vida con este código gracias

  2. avatar
    Yelinna PERU Mozilla Firefox Windows
    26 enero 2012 at 20:02 #

    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”;
    }

Responder