2010-06-02 6 views
7

Ich habe ein Benutzersteuerelement mit einer Eigenschaft, die ein Referenztyp ist. Der Windows Forms-Designer generiert weiterhin Code, der den Anfangswert der Eigenschaft null zuweist. Wie kann ich das verhindern?Wie verhindert man, dass der Windows Forms-Designer Standardwertzuweisungen für Eigenschaften generiert?

Ich habe versucht, Reset und ShouldSerialize Methoden - Reset hatte einen leeren Körper und ShouldSerialize immer falsch zurückgegeben - aber das hat nicht funktioniert. Ich habe auch das BrowsableAttribute angewendet und es auf false gesetzt.

Edit:

Der Typ der Eigenschaft ist eine Klasse im selben Projekt. Es ist keine Komponente oder Kontrolle, sondern nur eine einfache Klasse, die von Object erbt. Außerdem ruft der Setter der Eigenschaft eine Methode auf, die den Wert der Eigenschaft als Argument verwendet, und die Methode akzeptiert null nicht als gültiges Argument.

Beispiel:

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

Hinweis: Ich weiß, das tun bekommen und Set-Methoden würden hier wahrscheinlich besser geeignet.

+0

Fügen Sie ein Beispiel hinzu. Nur irgendein Ref-Typ oder ein Verweis auf eine Komponente/Kontrolle? –

+0

Auch wenn Sie den Standardwert nicht manuell auf NULL festlegen, ist der Standardwert für einen Ref-Typ implizit immer noch NULL. Was würdest du erwarten? –

+0

Ich gehe davon aus, dass der Windows Forms-Designer den Wert überschreibt, den Sie ursprünglich in das Steuerelement geschrieben haben? – Mike

Antwort

18

Trübe, ich könnte ein Schnipsel verwenden. Sagen Sie dem Designer, dass der Wert der Eigenschaft niemals serialisiert werden sollte:

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

+1 Ich liebe das Netz. –

+0

@Hans können wir auch einen Standardwert für eine Eigenschaft liefern und auf Designer rendern? – Brij

Verwandte Themen