Colabora |
Buscar un control en un formulario windows
Fecha: 07/Feb/2008 (06-02-08)
|
IntroducciónEn ocasiones se nos hace necesario recorrer los controles que contiene un formulario windows, bien sea para acceder a sus propiedades mediante código en tiempo de ejecución. Existen formas conseguir este objetivo una de ellas es la propiedad Controls, cuya propiedad la contienen todos los controles que son contenedores.
ContenidoPara realizar este desarrollo se utilizarán la propiedad colección Controls, y la propiedad HasChildren El código:Lo primero que se debe hacer es recorrer los controles del contenedor que se especifica en los parametros, esto lo hacemos con el comando For Each Luego debemos preguntar si el control actual es el control que buscamos esto lo realizamos comparando el nombre del control actual con el nombre especificado en el parametro. En el caso de haber hallado el control requerido, nos salimos del bucle con el comando Exit For, pero antes asignamos el valor del control para posteriormente retornarlo. El siguiente paso consta de utilizar HasChildren para validar si el control actual es un contenedor, ya que de ser asi llamamos nuestra función nuevamente enviando como paramentros el mismo nombre, pero como contenedor enviamos el control que estamos evaluando actualmente, esto es lo que se llama recursividad. Acá nos detenemos evaluamos si la recursividad nos devuelve algún control, para salirnos del bucle For Each o retornar el control hallado A continuación sigue código en Visual Basic .Net 2005: Private Function ControlBuscar(ByVal Nombre As String, ByVal Contenedor As Control) As Control Dim ctrControl As Control = Nothing For Each ctrBuscado As Control In Contenedor.Controls If ctrBuscado.Name.ToUpper = Nombre.ToUpper Then ctrControl = ctrBuscado Exit For End If If ctrBuscado.HasChildren Then ctrControl = Me.ControlBuscar(Nombre, ctrBuscado) If Not ctrControl Is Nothing Then Exit For End If End If Next Return ctrControl End Function A continuación un ejemplo de la utilización del código: Dim ctrControl As Control objControl = Me.ControlBuscar("btnGrabar", Me) If objControl Is Nothing Then MessageBox.Show("Control NO hallado") Else MessageBox.Show("Control encontrado") End If Bueno no siendo más y esperando que esto les sirva de ayuda, me despido desde Medellín - Colombia Espacios de nombres usados en el código de este artículo:
System.Windows.Forms
|
Lo comentado en este artículo está probado (y funciona) con la siguiente configuración:
El autor se compromete personalmente de que lo expuesto en este artículo es cierto y lo ha comprobado usando la configuración indicada anteriormente.
En cualquier caso, el Guille no se responsabiliza del contenido de este artículo.
Si encuentras alguna errata o fallo en algún link (enlace), por favor comunícalo usando este link:
Gracias.