domingo, 13 de junio de 2010

Propiedades recursivas

La verdad es que el título del post es casi definitivo, pero voy a intentar explicar mejor esto.

Hay algunas propiedades (hasta día de hoy, sólo conozco la propiedad Visible) que son recursivas, esto es que cuando se establece un valor en un control padre, se itera por todos los controles hijos para establecer de igual modo el valor de la propiedad.

En el caso de Visible me parece especialmente importante conocer esto porque si tu página juega a ocultar o mostrar controles en función de ciertos parámetros y además algunos de estos controles son a su vez hijos de otros controles, que entran ambos en este juego de "ocultación", puede que te vuelvas un poco loco con el tema.

Yo creo que un ejemplo terminará de poner las cosas en su sitio:

       ' CASO 1 
        Panel1.Visible = False
        ' Ahora tanto Panel1 como Button1 no son visibles,
        ' el valor de su propiedad Visible es False en ambos !!
        Button1.Visible = True
        ' A pesar de la asignación, Button1.Visible devuelve False
        ' porque su control padre también es False !!
        Button1.Visible = False
        ' Esta asignación si funciona como se espera,
        ' se asignó False a la propiedad Visible de Button1
        Panel1.Visible = True
        ' Ahora Panel1 es visible pero Button1 continúa siendo no visible,
        ' esto es que ha respetado la asignación anterior !!

       ' Este caso queda Panel1 VISIBLE, Button1 NO VISIBLE 

       ' CASO 2 
        Panel1.Visible = False
        ' Ahora tanto Panel1 como Button1 no son visibles,
        ' el valor de su propiedad Visible es False en ambos !!
        Button1.Visible = True
        ' A pesar de la asignación, Button1.Visible devuelve False
        ' porque su control padre también es False !!
        Panel1.Visible = True
        ' Ahora tanto Panel1 como Button1 son visibles,
        ' esto es que aunque la asignación pareció no funcionar,
        ' si que la respetado al establecer Panel1.Visible = True !!

        ' Este caso queda Panel1 VISIBLE, Button1 VISIBLE

Un saludo!

No hay comentarios:

Publicar un comentario