none
Objetos en un formulario.

    Pregunta

  • Hola

    Quiero conocer el como le hago para buscar  un deterninado objeto (con todas sus propiedades) en un formulario. y si es posible que fuese una funcion en donde se le pase como parametro: el formulario y el nombre del objeto a buscar.

    viernes, 06 de abril de 2012 13:46

Respuestas

  • "Yaim904" preguntó:

    > Quiero conocer el como le hago para buscar un deterninado objeto
    > (con todas sus propiedades) en un formulario...

    Hola:

    Cada objeto tendrá las propiedades que su programador le diseñó a la hora de crearlo, por tanto, cuando tu referencies cualquier objeto, podrás acceder a las propiedades públicas que tenga.

    > ... y si es posible que fuese una funcion en donde se le pase
    > como parametro: el formulario y el nombre del objeto a buscar.

    Inserta en algún módulo la siguiente función:

    Module Module1
    
        ''' <summary>
        ''' Devuelve la referencia de un control existente en un contenedor.
        ''' </summary>
        ''' <author>Enrique Martínez Montejo</author>
        ''' <date>20/08/2011</date>
        ''' <param name="parentContainer">Control contenedor.</param>
        ''' <param name="name">Nombre del control que se desea buscar. No se
        ''' diferencia entre mayúsculas y minúsculas.</param>
        ''' <returns></returns> 
        ''' <remarks></remarks>
        Public Function FindControlByName(Of T As Control)(parentContainer As T, name As String) As Control
    
            ' Comprobación de los valores de los parámetros
            '
            If ((parentContainer Is Nothing) OrElse (String.IsNullOrEmpty(name))) Then _
                Return Nothing
    
            For Each ctrl As Control In parentContainer.Controls
    
                If (ctrl.Name.ToUpperInvariant() = name.ToUpperInvariant()) Then _
                    Return ctrl
    
                If (ctrl.Controls.Count > 0) Then _
                    Return FindControlByName(ctrl, name)
            Next
    
            Return Nothing
    
        End Function
    
    End Module

    La función está restringida para que únicamente acepte objetos de la clase Control o que hereden de ella, como los controles TextBox, Button, Label, etc.

    Cuando desees obtener la referencia de cualquier control existente en el formulario donde actualmente se está ejecutando el código, llamarías a la función de la siguiente manera:

           Dim ctrl As Control = FindControlByName(Me, "Button1")
    
            If (Not ctrl Is Nothing) Then
    
                ' Obtenemos el valor de su propiedad Text
                '
                MessageBox.Show("Nombre del control: " & ctrl.Text)
    
            Else
                MessageBox.Show("No existe el control.")
    
            End If
    

    Fíjate que utilizo el nombre del control, en el ejemplo, un control Button llamado "Button1".

    Si el control existe, en la variable objeto 'ctrl' tienes la referencia al control, por lo que podrás acceder a sus propiedades públicas.

    Un saludo


    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.

    • Marcado como respuesta Yaim904 viernes, 06 de abril de 2012 17:45
    viernes, 06 de abril de 2012 16:46