Ich versuche, eine benutzerdefinierte Schaltfläche zu erstellen, wo die ForeColor immer karminrot ist und die BackColor immer Cyan ist. Hässliches Farbschema, aber ich versuche nur, es zu bekommen, so dass ich große Mengen von Steuerelementen mit einem konsistenten Farbschema erstellen kann, ohne jedes Steuerelement einzeln einzustellen. Hier ist, wie ich den Knopf codiert:Benutzerdefinierte Winforms-Steuerelemente (eine Schaltfläche speziell)
public partial class CustomButton : Button
{
private static Color _defaultForeColor = Color.Crimson;
private static Color _defaultBackColor = Color.Cyan;
public CustomButton()
{
InitializeComponent();
base.ForeColor = _defaultForeColor;
base.BackColor = _defaultBackColor;
}
public AutoScaleMode AutoScaleMode { get; set; }
[DefaultValue(typeof(Color), "Crimson")]
override public Color ForeColor
{
get { return base.ForeColor; }
set
{
base.ForeColor = _defaultForeColor;
}
}
[DefaultValue(typeof(Color), "Cyan")]
public override Color BackColor
{
get { return base.BackColor; }
set
{
base.BackColor = _defaultBackColor;
}
}
}
Wenn ich die benutzerdefinierte Schaltfläche auf meine Form fallen, ist der Hintergrund der reguläre Schaltfläche Farbe und der Text ist purpurrot. Wenn ich die App laufe, ist es auch dasselbe. Wenn ich jetzt versuche, die Vordergrund- oder Hintergrundfarbe im Eigenschaftsfenster zu ändern, gehen sie direkt zu den Standardeinstellungen zurück, die ich eingestellt habe (karminrot, cyan) und dann erscheinen sie auch so, wenn ich meine App starte. Wie erreiche ich, dass die Steuerelemente im Designer und zur Laufzeit korrekt angezeigt werden?