none
¿Ocultar propiedad a Visual Studio? RRS feed

  • Pregunta

  • Hola.

    Tengo un objeto que hereda de Control, el cual lo muestro en un Form.

    Pasa que a este objeto le he agregado propiedades, las cuales el Visual Studio me las rellena automaticamente. Me explico, cuando arrastro este nuevo objeto en el formulario, el archivo Form1.Designer.cs aparece mi nuevo objeto pero estas nuevas propiedades, aparecen con basura, es decir, objetos que no deseo, ya que estas propiedades las relleno por codigo o se rellenan en la ejecucion del programa.

    Hasta ahora, solo he podido ocultarlas a la ventana de propiedades ([usando Browsable(false)]), pero Visual Studio, las sigue generando.

    Alguien me podria guiar y ayudar.

    Gracias y saludos.

    lunes, 6 de septiembre de 2010 6:36

Respuestas

  • Quizás si usas DefaultValueAttribute, para que el designer vea que ya trae
    un valor y que no es necesario asignarle algo... Sigo revisando.
     
    Saludos.
     
     


    Fernando Gómez
    fermasmas.wordpress.com
    • Marcado como respuesta el oberto jueves, 9 de septiembre de 2010 4:41
    martes, 7 de septiembre de 2010 16:56
  • Perfecto, qué bueno que se solucionó. Y sí, es necesario usarlo con
    Browsable, y quizás con algunas otras como Category y Description.
     
    Con respecto al valor de DefaultValue, deberías poner su valor inicial. Es
    decir, cuando alguien cree una instancia de la clase, ¿qué valor devuelve tu
    propiedad? Ése es el que deberías poner. Si el tipo de la propiedad es algún
    objeto, y no hay problema con que éste sea nulo, pues sí puedes poner null.
    Por ejemplo:
     
    [Browsable(true)]
    [DefaultValue(0)]
    public int IntProperty { ... }
     
    [Browsable(true)]
    [DefaultValue(null)]
    public AlgunaClase AlgunaClaseProperty { ... }
     
    [Browsable(true)]
    [DefaultValue(string.Empty)]
    public string StrProperty { ... }
     
    etcétera.
     
    Saludos.
     
     


    Fernando Gómez
    fermasmas.wordpress.com
    • Marcado como respuesta el oberto sábado, 11 de septiembre de 2010 2:47
    jueves, 9 de septiembre de 2010 16:04

Todas las respuestas

  • hola

    sino quieres que se generen podrias definir las propiedades como privadas, para que sean internas

    o sino en el constructor del control definirle un valor correcto, para inicializar el valor cuando se dibuja

    o quizas en algun evento de Initialize

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    lunes, 6 de septiembre de 2010 12:40
  • Hola.

    Segui tus consejos, y las inicie como null, pero sigue pasando.

    Las declare privadas no me sirve de mucho, ya que las propiedades las accedo desde fuera, hasta ahora, lo estoy haciendo a la "antigua", mediante metodos que me devuelven el valor de la propiedades.

    Gracias por tu tiempo.

    Saludos.

    lunes, 6 de septiembre de 2010 22:42
  • Podrías especificar de que tipo son las propiedades, para tener una mejor idea, en cuanto a los valores, es debido a que visual le asigna un bloque de memoria al crear el objeto y si no los asignas cogen lo que este ahi, siendo cualquier valor, por lo pronto prueba asignando valores null, String.empty,0 etc en el constructor.
    martes, 7 de septiembre de 2010 4:25
  • Quizás si usas DefaultValueAttribute, para que el designer vea que ya trae
    un valor y que no es necesario asignarle algo... Sigo revisando.
     
    Saludos.
     
     


    Fernando Gómez
    fermasmas.wordpress.com
    • Marcado como respuesta el oberto jueves, 9 de septiembre de 2010 4:41
    martes, 7 de septiembre de 2010 16:56
  • Hola.

    El DefaultValueAttribute, me sirvio, aunque lo estoy usando junto con Browsable.

    Muchas gracias a todos, he solucionado el problema.

    El tipo es un clase propia, a si que el DefaultValueAttribute deberia usarlo con null?

    Gracias y Saludos.

     

    jueves, 9 de septiembre de 2010 4:40
  • Perfecto, qué bueno que se solucionó. Y sí, es necesario usarlo con
    Browsable, y quizás con algunas otras como Category y Description.
     
    Con respecto al valor de DefaultValue, deberías poner su valor inicial. Es
    decir, cuando alguien cree una instancia de la clase, ¿qué valor devuelve tu
    propiedad? Ése es el que deberías poner. Si el tipo de la propiedad es algún
    objeto, y no hay problema con que éste sea nulo, pues sí puedes poner null.
    Por ejemplo:
     
    [Browsable(true)]
    [DefaultValue(0)]
    public int IntProperty { ... }
     
    [Browsable(true)]
    [DefaultValue(null)]
    public AlgunaClase AlgunaClaseProperty { ... }
     
    [Browsable(true)]
    [DefaultValue(string.Empty)]
    public string StrProperty { ... }
     
    etcétera.
     
    Saludos.
     
     


    Fernando Gómez
    fermasmas.wordpress.com
    • Marcado como respuesta el oberto sábado, 11 de septiembre de 2010 2:47
    jueves, 9 de septiembre de 2010 16:04
  • Hola, use el DefaultValue en null,  funciona perfecto.

    Gracias a todos los que amablemente respondieron.

    Saludos.

    sábado, 11 de septiembre de 2010 2:49