none
Solicitud de conesejos y recomendaciones: Propiedades en Winforms. VB.NET (2012) RRS feed

  • Pregunta

  • Buenos días. Hace un tiempo me propuse reemplazar las variables públicas de mis proyectos por propiedades generadas en los formularios. De manera que al llamar a un form, podría pasarle un valor de la siguiente manera:

    FormularioDePrueba.PropiedadColor="Azul"

    FormularioDePrueba.show

    Con este método, tengo el inconveniente que al cerrar el form con propiedades (FormularioDePrueba.close) y volver a abrirlo, conserva el estado con el que se cerró (es decir, las variables continuan con valores, las grillas con la última selección, etc), por lo cual, tengo la impresión que debo realizar otro proceso al cerrarlo.

    Lo que me alarma es que no encontré muchas referencias en la web acerca de este método de pasar valores entre formularios y agradecería sus consejos acerca del método mas recondado:

    -Variables publicas

    -Propiedaes en Clases

    -Propiedades en Formularios

    Desde ya muchas gracias.

    martes, 22 de diciembre de 2015 13:18

Respuestas

  • "CM16" escribió:

    > Lo estaba utilizando, pero cuando quiero regresar al formulario propietario
    > y ejecutar en este un subproceso, tengo un inconveniente, no se como llamarlo.
    >
    > Public Class FormPrimario
    >
    >    Sub ActualizarGrilla
    >       ...
    >       ...
    >       ...
    >    end sub

    Porque lo mismo el procedimiento ActualizarGrilla tendría que estar FUERA del FormPrimario e incluirlo en algún Module con ésta firma:

        Friend Sub ActualizarGrilla(nombreGrilla As DataGridView)
    
    
    
        End Sub

    O lo mismo tampoco haría falta un procedimiento ActualizarGrilla en un Module, porque ésta se podría actualizar con los datos que devolviera alguna propiedad pública (Public) o amigable (Friend) de FormSecundario en lugar de llamar desde ésta al método ActualizarGrilla de FormPrimario.

    Como observo que estás trabajando con "grillas" que están en distintos formularios, lo mismo hasta te resulta útil la lectura del siguiente artículo:

    Cómo pasar datos a un formulario


    Enrique Martínez Montejo
            [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, se inteligente y activa la instrucción
    Option Strict.

    • Marcado como respuesta CM16 miércoles, 23 de diciembre de 2015 11:18
    martes, 22 de diciembre de 2015 17:59
    Moderador

Todas las respuestas

  • "CM16" preguntó:

    > ... agradecería sus consejos acerca del método mas recondado:
    >
    > -Variables publicas
    > -Propiedaes en Clases
    > -Propiedades en Formularios

    Hola:

    En primer lugar indicarte que un formulario cualquiera no es más que otra clase de las muchas existentes en .NET, por lo que si deseas que tus formularios dispongan de ciertas características propias, lo correcto es implementar en ellos los procedimientos Property (propiedades) públicos que estimes necesarios.

    > FormularioDePrueba.PropiedadColor="Azul"
    >
    > FormularioDePrueba.show
    >
    > Con este método, tengo el inconveniente que al cerrar el form con propiedades
    > (FormularioDePrueba.close) y volver a abrirlo, conserva el estado con el que
    > se cerró (es decir, las variables continuan con valores, las grillas con la
    > última selección, etc), por lo cual, tengo la impresión que debo realizar
    > otro proceso al cerrarlo.

    Si estás utilizando variables globales a nivel del formulario o de la aplicación, es normal que ello suceda, porque tendrías que "limpiar" sus valores.

    Observo que utilizas la sintaxis antigua de Visual Basic clásico para llamar a un formulario:

        NombreFormulario.Propiedad = valor
        NombreFormulario.NombreMétodo

    También te comento que lo correcto sería declarar una variable objeto del tipo de la clase de formulario que deseas utilizar:

     Dim form As New NombreFormulario()

    Establecer el valor de sus propiedades públicas mediante la variable objeto declarada:

    form.NombrePropiedad = valor

    Y por último, invocar a sus métodos también mediante la variable objeto:

    form.NombreMétodo()

    Un saludo y ¡Feliz Navidad!

       

    Enrique Martínez Montejo
            [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, se inteligente y activa la instrucción
    Option Strict.




    martes, 22 de diciembre de 2015 17:26
    Moderador
  • Buenas tardes Enrique y gracias por tu pronta respuesta.

    Con respecto a esto:

    Observo que utilizas la sintaxis antigua de Visual Basic clásico para llamar a un formulario:

        NombreFormulario.Propiedad = valor
        NombreFormulario.NombreMétodo

    Lo estaba utilizando, pero cuando quiero regresar al formulario propietario y ejecutar en este un subproceso, tengo un inconveniente, no se como llamarlo.

    Ejemplo:

    Public Class FormPrimario

    Sub ActualizarGrilla
    ...
    ...
    ...
    end sub

    Private Sub Button1(sender As Object, e As EventArgs) Handles Button1.Click
    FormSecundario.show
    End Sub

    End Clase



    Public Class FormSeundario

    Private Sub Button1(sender As Object, e As EventArgs) Handles Button1.Click
    me.close
    FormPrimario.ActualizarGrilla
    End Sub

    end class


    martes, 22 de diciembre de 2015 17:46
  • "CM16" escribió:

    > Lo estaba utilizando, pero cuando quiero regresar al formulario propietario
    > y ejecutar en este un subproceso, tengo un inconveniente, no se como llamarlo.
    >
    > Public Class FormPrimario
    >
    >    Sub ActualizarGrilla
    >       ...
    >       ...
    >       ...
    >    end sub

    Porque lo mismo el procedimiento ActualizarGrilla tendría que estar FUERA del FormPrimario e incluirlo en algún Module con ésta firma:

        Friend Sub ActualizarGrilla(nombreGrilla As DataGridView)
    
    
    
        End Sub

    O lo mismo tampoco haría falta un procedimiento ActualizarGrilla en un Module, porque ésta se podría actualizar con los datos que devolviera alguna propiedad pública (Public) o amigable (Friend) de FormSecundario en lugar de llamar desde ésta al método ActualizarGrilla de FormPrimario.

    Como observo que estás trabajando con "grillas" que están en distintos formularios, lo mismo hasta te resulta útil la lectura del siguiente artículo:

    Cómo pasar datos a un formulario


    Enrique Martínez Montejo
            [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, se inteligente y activa la instrucción
    Option Strict.

    • Marcado como respuesta CM16 miércoles, 23 de diciembre de 2015 11:18
    martes, 22 de diciembre de 2015 17:59
    Moderador
  • Que buena información me has dado Enrique. Al parecer tengo un método bastante rústico de programación en algunos aspectos. Sabe usted de algún blog o libro recomendable que contenga información para cambiar estos vicios?

    Desde ya muchas gracias.

    Saludos.

    miércoles, 23 de diciembre de 2015 11:20
  • "CM16" preguntó:

    > Sabe usted de algún blog o libro recomendable que contenga información para cambiar estos vicios?

    Lo siento, pero no conozco ningún blog, manual o libro que te pueda recomendar para que te enseñe a diseñar correctamente los procedimientos de tus clases, incluidos los que pudieras tener en tus clases de formularios.

    Lo que sí te puedo aconsejar es que cuando tengas un procedimiento que va a ser utilizado por varios formularios de una misma aplicación, lo que tienes que hacer es sacar ese procedimiento fuera de esas clases e insertarlos en nuevas clases o módulos de ese mismo proyecto. Y cuando quieras comunicarte con un formulario desde otro formulario, aplica la técnica descrita en el artículo que te indiqué en mi respuesta anterior, siempre y cuando la comunicación la quieras realizar digamos de una manera "elegante". :-)


    Enrique Martínez Montejo
            [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, se inteligente y activa la instrucción
    Option Strict.

    miércoles, 23 de diciembre de 2015 16:30
    Moderador