Die Eigenschaft BackColor
ist standardmäßig eine Ambient-Eigenschaft, was bedeutet, dass sie ihren Wert vom übergeordneten Steuerelement übernimmt. Wenn Sie explizit auf auf einen bestimmten Wert festlegen, setzt dies die Umgebungsnatur außer Kraft und zwingt sie, diesen bestimmten Wert zu verwenden.
Das standardmäßige Windows-Schaltflächensteuerelement unterstützt keine benutzerdefinierten Farben, daher zeichnet WinForms das Steuerelement tatsächlich benutzerdefiniert, damit der Designer seine Farbe überschreiben kann. Auf diese Weise, wenn Sie eine hässliche grüne oder rote Taste haben möchten, können Sie das tun.
Was ist hier passiert ist, haben Sie effektiv eine benutzerdefinierte Hintergrundfarbe für die Schaltfläche Steuerelement festgelegt (Sie legte es auf die Hintergrundfarbe eines 3D-Steuerelement, aber es könnte genauso leicht lila gewesen sein), und das hat WinForms gezwungen Zeichnen Sie das Steuerelement und malen Sie den Hintergrund mit der angegebenen Farbe. Dadurch erhält es eine "flache" Erscheinung - die Hintergrundfarbe wird jetzt mit einer einzigen benutzerdefinierten Farbe dargestellt, anstatt den Standard-Verlaufseffekt zu verwenden. Unter dem Windows Classic (Pre-Aero) -Thema wäre es nicht so auffällig gewesen, denn die Buttons wurden mit der flachen 3D-Kontrollfarbe bemalt. Aber Aero fügte Farbverläufe und andere "heiße" Effekte hinzu, was diesen Stab wie einen wunden Daumen ausmacht.
Um den Wert, den Sie festgelegt haben, zu löschen und die Umgebungseigenschaft der Eigenschaft wiederherzustellen, können Sie mit der rechten Maustaste auf die Eigenschaft im Eigenschaftenfenster klicken und "Zurücksetzen" auswählen. Sie können es auch tun, durch den Code durch die Eigenschaft default(Color)
Einstellung:
myButton.BackColor = default(Color);
Sie müssen auch zurück zu true
die UseVisualStyleBackColor
Eigenschaft, die false
automatisch eingestellt wird, wenn die BackColor
Eigenschaft geändert wird, um die Gewohnheit zu unterstützen Hintergrundfarbe.
Alternativ können Sie WinForms anweisen, benutzerdefinierte Eigenschaften wie diese insgesamt zu ignorieren und Windows zu bitten, das Schaltflächensteuerelement zu zeichnen. Tun Sie dies, indem Sie die Eigenschaft FlatStyle
auf FlatStyle.System
setzen.
Auch dies kann entweder im Designer oder durch Code erfolgen. Dies verhindert nicht nur, dass Sie dumme Dinge wie die Hintergrundfarbe ändern, sondern auch ein fürchterlich hässliches Steuerelement, aber es stellt auch das native Verhalten des Win32-Schaltflächensteuerelements für Ihre WinForms-Anwendung wieder her, einschließlich der subtilen Aero-Fade-Effekte bei Hover.
Ich habe keine Ahnung, warum dies nicht der Standard war. Sie sollten eine spezielle Anfrage stellen, um hässliche und nicht standardmäßige Steuerelemente zu erhalten. Das sollte nicht automatisch passieren. Ich kann nur annehmen, dass es ein Zugeständnis an VB 6-Programmierer war, die jahrelang alle möglichen hässlichen Kontrollen durchführen konnten.
Wenn im Entwurfsmodus geändert dann gehen Sie einfach auf [zurück color] Eigenschaft (im Entwurfsmodus) und klicken Sie rechts. Sie erhalten ein Menü, das auf die Standardeinstellungen zurückgesetzt wird. –