Benutzer mit den meisten Antworten
Wieso klappt Forecolor und enabled bei Buttons nicht gleichzeitig ?

Frage
-
Hallo,
Ich will einen Button cmdSchliessen disablen und gleichzeitig auch so grau machen, dass man das disabled auch richtig sieht. (die minimale optische Änderung lässt den Benutzer finde ich nicht erkennen, dass der button disabled ist). Ich habe folgenden Code:
cmdSchliessen.ForeColor = SystemColors.ControlDark cmdSchliessen.Enabled = False
Das klappt nicht. Jedenfalls nicht gleichzeitig. Erst wenn ich den Button später wieder enable, wird die Farbe sichtbar. Oder: Wenn ich die zweite Zeile auskommentiere, wird die Farbe übernommen.
Kann ein disbled Button keine Farbe haben (im Entwurf der Form kann ich das sehr wohl gleichzeitig einstellen? Oder was mache ich falsch?
Gruß
Thomas
Win7-64, vb.net 2010, Anfänger- Bearbeitet Thomas Keller60 Donnerstag, 11. Oktober 2012 08:14
Antworten
-
Hallo Thomas.
Ich habe gerade auf meinem TFT einmal herumgespielt und ein winziges Demoprogramm geschrieben (1 Button in einer sonst leeren Form), dazu folgenden Code:
PrivateSubForm1_Click(ByValsender AsObject, ByVale AsSystem.EventArgs) HandlesMe.Click
If Button1.Enabled Then Button1.ForeColor = SystemColors.ControlDark Else Button1.ForeColor = SystemColors.ControlText
Button1.Enabled = NotButton1.Enabled
EndSub
Also wirklich "minimalst". :-) Bloß ... ich sehe überhaupt gar keine Änderung wenn ich die Zeile mit der Farbumstellung ausschalte. Beide mal sieht der Button im normalen gleich aus, ebenso im disabled Zustand. Insbesondere die Schriftfarbe des Disabled-Buttons ist beide mal grau, nicht schwarz, wie in deinem "laufend"-Bild. Hast du möglicherweise dein System-Theme vermurkst?
Alternativ bleibt natürlich noch der Weg zu Buttons mit Bildern ... leider hat auch das Vor- und Nachteile (z.B. nicht immer gut zum aktuellen System-Theme zu passen, weil statisch).
LG, Dennis.
- Als Antwort markiert Thomas Keller60 Freitag, 12. Oktober 2012 09:57
Alle Antworten
-
Hallo Thomas,
der Sinn und Zweck eines deaktivierten Controls ist ja u.a. auch, dass der Benutzer das auch sieht. Daher werden deaktivierte Controls in der Regel so dargestellt, wie das System es vorsieht.
Mögliche Lösungen gibt es zwar, ob man das aber wirklich machen sollte, sei dahingestellt.
http://social.msdn.microsoft.com/Forums/en/winforms/thread/20c946cd-946d-43d1-a3a9-a881c7efb3ee
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Stefan,
danke für die schnelle Antwort. Ich verstehe die so, dass man einem disbled Button eben keine Farbvorschriften machen kann. Ich will aber ja gar nichts besonders. Aber ich sehe eben (alter Mann...) irgendwie keinen Unterschied zwischen einem disabled und einem enabled Button. Insbesondere auf TFT-Bildschirmen. Einzig der Rand ist etwas weniger und die Füllung einen Deut anders. Kaum sichtbar. Das war ja auch das gleiche Probleme des Kollegen in dem Link, den Du gepostet hast. (siehe Bild oben)
Wenn ich in Access 2010 einen Button disable, dann hat der ein deutlich anderes Aussehen, das wollte ich eben in vb.net auch haben.
Da muss ich dann doch irgendwas noch falsch eingestellt haben, dass kann ja nicht "normal" sein. Ist aber eine normale Windows-7-Oberfläche, vielleicht wäre es mit dem win2000-Style noch anders, aber das habe ich nicht ausprobiert...
Übrigens: wenn ich im Entwurfsmodus meiner Form die Farbe vergebe an den disabled Button wird mir schon was angezeigt, was ich gerne hätte... (Bild unten)
Gruß
Thomas
-
Hallo Thomas.
Ich habe gerade auf meinem TFT einmal herumgespielt und ein winziges Demoprogramm geschrieben (1 Button in einer sonst leeren Form), dazu folgenden Code:
PrivateSubForm1_Click(ByValsender AsObject, ByVale AsSystem.EventArgs) HandlesMe.Click
If Button1.Enabled Then Button1.ForeColor = SystemColors.ControlDark Else Button1.ForeColor = SystemColors.ControlText
Button1.Enabled = NotButton1.Enabled
EndSub
Also wirklich "minimalst". :-) Bloß ... ich sehe überhaupt gar keine Änderung wenn ich die Zeile mit der Farbumstellung ausschalte. Beide mal sieht der Button im normalen gleich aus, ebenso im disabled Zustand. Insbesondere die Schriftfarbe des Disabled-Buttons ist beide mal grau, nicht schwarz, wie in deinem "laufend"-Bild. Hast du möglicherweise dein System-Theme vermurkst?
Alternativ bleibt natürlich noch der Weg zu Buttons mit Bildern ... leider hat auch das Vor- und Nachteile (z.B. nicht immer gut zum aktuellen System-Theme zu passen, weil statisch).
LG, Dennis.
- Als Antwort markiert Thomas Keller60 Freitag, 12. Oktober 2012 09:57
-
Hallo Dennis,
das ist es! :-) Wenn ich ein neues Form in mein Projekt reintu, verhält sich das so wie bei Deinem Test und so wie ich es eigentlich erwartet hatte. Du hast recht, ich habe in meinem Form wohl was vermurkst.
Aber wo ? System-Theme sagt mir nix und die Onlinehilfe findet allgemein "Themen..." :-(
In den Eigenschaften der Form sehe ich nichts, was ich im Layoutbereich geändert habe, außer die Farbe. Das müsste ja zum Form gehören, oder ? auch bei neuen Buttons habe ich den Fehler.
Wo stelle ich das wieder zurück bzw. ein?
Danke und Gruß
Thomas
-
es liegt an der Hintergrundfarbe des Form. Keine Ahnung, wieso das mit dem Aussehen von Buttons gekoppelt ist, ich hatte unter Benutzuerdefiniert einfach eine Farbe ausgesucht, wie man das als Greehorn halt so macht. Darf man wohl nicht...
Danke nochmals.
Thomas
-
Herausgefunden: die Backcolor und die forcolor eines Buttons wird vom Form geerbt. Wenn ich dann eine individuelle Hintergrundfarbe des Forms haben will, muss ich die Farben der Buttons individuell einstellen, damit ich keine Probleme beim disablen bekomme.