2010-06-02 15 views
7

Tengo un control de usuario con una propiedad que es de un tipo de referencia. El diseñador de Windows Forms sigue generando código que asigna el valor inicial de la propiedad a nulo. ¿Cómo puedo prevenir esto?Cómo evitar que el diseñador de Windows Forms genere asignaciones de valores predeterminadas para las propiedades?

Intenté agregar métodos Reset y ShouldSerialize - Reset tenía un cuerpo vacío y ShouldSerialize siempre devolvía false - pero eso no funcionó. También apliqué el atributo BrowsableAttribute y lo configuré en falso.

Editar:

tipo de la propiedad es una clase en el mismo proyecto. No es un componente o control, solo una clase simple que hereda de Object. Además, el creador de la propiedad llama a un método que utiliza el valor de la propiedad como argumento y el método no acepta nulo como argumento válido.

Ejemplo:

public MyClass Property1 
{ 
    get { return _property1; } 
    set 
    { 
     _property1 = value; 
     SomeMethod(value); // This method throws ArgumentNullException; 
    } 
} 

Nota: Me doy cuenta de que conseguir y métodos establecidos probablemente sería más apropiado en este caso.

+0

Por favor, agrega un ejemplo. ¿Cualquier tipo de ref o ref de un componente/control? –

+0

Incluso si no establece manualmente el valor predeterminado en NULL, el valor predeterminado seguirá siendo NULL implícitamente para un tipo de ref. ¿Qué esperas que sea? –

+0

Supongo que Windows Forms Designer está sobrescribiendo el valor que inicialmente escribió en el control? – Mike

Respuesta

18

Murky, podría usar un fragmento. Dile al diseñador que nunca debe serializar el valor de la propiedad:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 
    public Image Aardvark { get; set; } 
+0

+1 Me encanta la red. –

+0

@Hans ¿podemos también proporcionar un valor predeterminado para una propiedad y renderizarlo en el diseñador? – Brij

Cuestiones relacionadas