2009-07-27 11 views
2

Wenn ich mit der rechten Maustaste auf meine benutzerdefinierte UserControl BackColor -Eigenschaft im Eigenschaftenraster klicke, dann auf Reset, möchte ich die BackColor -Eigenschaft ändern, um zum Beispiel (Color.LightGreen) und den Eigenschaftswert un-fett anzuzeigen Das ist der Standardwert.Wie erstellt man ein UserControl mit einer benutzerdefinierten DefaultBackColor?

Derzeit weiß ich, ich kann dies tun:

public override void ResetBackColor() { 
    BackColor = Color.LightGreen; 
} 

die so weit wie man ihn auf Lightgreen-On-Reset funktioniert. Aber es scheint immer noch bolded in der Eigenschaft-Raster, darauf hinweist, dass der aktuelle Wert nicht der Standardwert ist.

Ich bemerke, dass die Klasse Control eine statische schreibgeschützte Eigenschaft DefaultBackColor hat. Da es statisch ist, kann ich es leider nicht überschreiben.

Gibt es eine Möglichkeit, alle gewünschten Funktionen zu erhalten?

Antwort

6

Sie können dies erreichen, indem er mit dem DefaultValue Attribut:

public UserControl1() 
{ 
    InitializeComponent(); 
    this.BackColor = Color.LightGreen; 
} 

[DefaultValue(typeof(Color), "LightGreen")] 
public override Color BackColor 
{ 
    get 
    { 
     return base.BackColor; 
    } 
    set 
    { 
     base.BackColor = value; 
    } 
} 
Verwandte Themen