Festlegen eines schreibgeschützten Textfelds Standardfarbe

8

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"?

Codebeispiel

Dies ist ein einfacher Code zur Demonstration. Wenn SystemColors.Control der Weg zu gehen ist, werde ich es in ReadOnlyChanged Event ändern ...

%Vor%     
Avi Turner 04.08.2013, 05:11
quelle

2 Antworten

11

Sie müssen BackColor auf das Aussehen eines ReadOnly TextBox's BackColor setzen, das ist Color.FromKnownColor(KnownColor.Control) :

%Vor%

Sie müssen möglicherweise eine Variable, um die aktuelle BackColor jedes Mal zu speichern, wenn die BackColor Ihrer TextBox ändert:

%Vor%     
King King 04.08.2013, 05:59
quelle
3

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.

    
Grant Winney 04.08.2013 05:26
quelle

Tags und Links