TextBox wird nach Änderung von "Enabled" nicht ausgegraut
-
Hallo zusammen!
Ich habe verschiede Objekte vom Typ TextBox und einige Buttons in einem Panel. Nun würde ich gern beim Drücken auf einen dieser Buttons ein paar dieser Textfelder deaktivieren und auch ausgegraut darstellen. Das funktioniert soweit auch.
Wenn ich den Textboxen allerdings über die Eigenschaft BackColor eine eigene Farbe gebe funktioniert zwar das Deaktivieren, aber das Ausgrauen funktioniert nicht mehr.
Wie kann ich eine eigene Farbe vergeben und dennoch die Textbox mit Enabled=False ausgegraut darstellen?
Vielen Dank fürs Lesen
-
textBox1.BackColor = Color.Gray;
-
OK, dann muss man es also sozusagen manuell machen.
Danke Dir!
Wieso wird, wenn man die Eigenschaft BackColor unangetastet lässt, das Ausgrauen automatisch ausgeführt sobald man Enabled ändert? Ergänzt die IDE da etwas, oder wie funktioniert das?
-
µ schrieb:
textBox1.BackColor = Color.Gray;
Ich empfehle:
Control.ResetBackColor()ujnhu schrieb:
Wieso wird, wenn man die Eigenschaft BackColor unangetastet lässt, das Ausgrauen automatisch ausgeführt sobald man Enabled ändert? Ergänzt die IDE da etwas, oder wie funktioniert das?
Ich nehme an, dass das Control in einem speziellen Zustand ist, so lange man keine eigene Hintergrundfarbe gesetzt hat. Sobald man selber eine Farbe setzt, nimmt das System an, dass man die Farbe auch selber verwaltet. Eigentlich keine so dumme Idee. So kann man sich entweder auf das Standardverhalten verlassen oder es komplett in die eigene Hand nehmen. Somit hat man auch die Möglichkeit eine andere Farbe zu verwenden, wenn das Control deaktiviert ist.
Grüssli
-
ujnhu schrieb:
Wieso wird, wenn man die Eigenschaft BackColor unangetastet lässt, das Ausgrauen automatisch ausgeführt sobald man Enabled ändert? Ergänzt die IDE da etwas, oder wie funktioniert das?
Solchem Verhalten kann man gut mit ILSpy auf den Grund gehen:
http://wiki.sharpdevelop.net/ILSpy.ashxDamit kannst Du Dir anschauen wie BackColor und Enabled implementiert sind.
Nur falls das entsprechende Verhalten in nativem Code implementiert ist, ist man aufgeschmissen.