Ich habe ein TextBox
welches auf ReadOnly gesetzt ist.
Irgendwann steht diese TextBox zur Bearbeitung zur Verfügung, und es sind BackColor-Änderungen (es zeigt an, ob der Wert gültig ist).
Wenn ich die Texbox auf ReadOnly zurücksetzen möchte, erhält die TextBox nicht die ursprüngliche BackColor, die eine ReadOnly TextBox erhält
Was soll ich tun, um wieder die Originalfarbe zu bekommen?
Mir ist klar, dass ich die Farbe manuell auf SystemColors.Control
setzen kann, aber ist das der "richtige Weg"?
Dies ist ein einfacher Code zur Demonstration.
Wenn SystemColors.Control der Weg zu gehen ist, werde ich es in ReadOnlyChanged
Event ändern ...
Sie müssen BackColor
auf das Aussehen eines ReadOnly TextBox's BackColor
setzen, das ist Color.FromKnownColor(KnownColor.Control)
:
Sie müssen möglicherweise eine Variable, um die aktuelle BackColor jedes Mal zu speichern, wenn die BackColor Ihrer TextBox ändert:
%Vor% Ja, das ist in Ordnung. Es gibt keinen Grund, warum Sie die Systemfarben nicht verwenden können, um die gewünschte Farbe für das Steuerelement festzulegen. Ich habe noch nie etwas in WinForms
gehört, das dazu führen würde, dass ein Steuerelement beim Festlegen von ReadOnly = true
automatisch auf die Standardfarbe zurückgesetzt wird.
Ich nehme an, eine Alternative besteht darin, eine Variable auf Klassenebene mit dem Namen textBox1OriginalColor
oder etwas zu erstellen und sie im Ereignis Load
des Formulars festzulegen. Dann wissen Sie genau, was es war, als das Formular ursprünglich angezeigt wurde, wenn Sie glauben, dass jemand in Zukunft die Standardhintergrundfarbe des Textfelds auf, sagen wir, Blau im Designer oder so einstellen könnte.