2010-12-07 2 views
4

Wie ändert man die Farbe des Textes, wenn ein Steuerelement deaktiviert ist. Ich möchte eine andere Farbe festlegen, wenn die Steuerung in C# winforms deaktiviert ist.Change TextColor des deaktivierten Steuerelements

+1

Welche Art von Steuerung? Verschiedene Steuerelemente verhalten sich unterschiedlich, und Sie müssen diese Fälle anders behandeln. –

+0

Label, Textfeld und Schaltfläche. –

Antwort

3

Edit: Ich hatte den gleichen Fehler gemacht wie Cody in den Kommentaren so meine Antwort korrigiert.

Es hängt davon ab, welche Kontrolle es ist.

Zum Beispiel, wenn es ein TextBox ist, könnten Sie vielleicht ReadOnly anstelle von deaktiviert machen. Bei einigen anderen Steuerelementen können Sie ähnliche Aktionen ausführen, damit sie deaktiviert angezeigt werden, ohne dass sie tatsächlich deaktiviert sind.

Wenn Sie es jedoch richtig machen möchten, müssen Sie sie Owner zeichnen zeichnen oder das OnPaint-Ereignis überschreiben und den Text selbst zeichnen.

+0

+1 für den Vorschlag des Eigentümers. Dies ist der richtige Weg, um dieses Problem zu lösen, und es funktioniert garantiert für fast alle gängigen Steuerungen. –

+0

Weder Label, TextBox noch Button unterstützen die Eigentümerzeichnung. –

+0

Aus Interesse - für welche wird es nicht funktionieren? –

1

Sie können es einfach manuell tun - wenn Sie das Steuerelement deaktivieren, nur die Textfarbe ändern?

+3

Wenn das betreffende Steuerelement eine 'TextBox' ist, wird dies nicht funktionieren. Sie können nur die 'BackColor' ändern, wenn sie deaktiviert ist, nicht ihre 'ForeColor' (d. H. Die Textfarbe). –

0

Wenn Sie viele Kontrollen haben, können Sie dies tun:

  • befestigen Formular OnChildAdded Ereignis
  • im Falle, wenn verwenden ... ist Struktur vom Typ Steuerungstyp zu bestimmen
  • je registrieren Sie sich auf dem Kontrolltyp, richtiges OnEnabledChange Ereignis
  • im Fall, Textfarbe entsprechend

Th Auf diese Weise erhalten Sie einen Code, der für alle Ihre Formulare geeignet ist und schrittweise erweitert wird, um alle erforderlichen Steuerelemente zu verwenden.

Ich werde etwas Code zur Verfügung stellen, wenn das der Weg ist, den Sie gehen möchten ...