2009-02-26 17 views
6

In C# erstelle ich ein Formularfenster für einen LAN-Messenger mit zwei Textfeldern. Ich muss eine bestimmte Textbox als schreibgeschützt erstellen, aber jeder Text, der an sie gesendet wird, erscheint grau, was nicht wünschenswert ist. Gibt es einen Weg, der verhindert werden kann?Schreibgeschützte Textbox in C#

Antwort

0

Die graue Farbe zeigt den ReadOnly-Status des Textfelds an. Es ist eine visuelle Anzeige für den Benutzer, der keinen Text eingeben muss, um festzustellen, dass die Textbox tatsächlich deaktiviert ist.

Wenn Sie nur das schreibgeschützte Verhalten benötigen, sollten Sie stattdessen lieber ein Label verwenden.

6

Man könnte es ersetzen mit einem Etikett oder auf dem Textfeld in dem KeyPress-Ereignis, auf true gesetzt ist behandelt:

void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    e.Handled = true; 
} 
+3

Ich persönlich hasse diesen Ansatz, weil der Benutzer immer noch denkt, sie können den Text bearbeiten und wird dann überrascht, wenn die Buchstaben sie nichts tun. –

+0

Ich stimme zu, aber es scheint, dass die Person, die die Frage stellte, über den grauen Text in einem deaktivierten Textfeld besorgt schien, dies ist einfacher als das Erben und Überschreiben des Farbenereignisses. – benPearce

+0

ReadOnly = True ist noch einfacher –

2

Sie die Farbe des Textes festgelegt werden, indem die TextboxForeColor Eigentum.

Zum Beispiel:

myTextBox.ForeColor = Color.Black

22

ich eine Textbox verwenden würde und Readonly auf true, ForeColor zu Color.Black und Backcolor zu Color.White gesetzt. Auf diese Weise können Sie den Text immer noch auswählen und mit Strg-C kopieren.

+0

Älterer Thread, aber ich fand das nützlich. Das Textfeld sieht normal aus, außer dass Sie nicht hinein tippen können. Prost! – Anders

1

Um das Textfeld weiß (oder Fenster) zu lassen, wenn es schreibgeschützt ist, müssen Sie die BackColor-Eigenschaft explizit auf Fenster festlegen. Um dies zu tun, müssen Sie die BackColor zuerst auf einen anderen Wert und dann wieder auf Window festlegen. Die Backcolor-Eigenschaft sollte fett dargestellt werden, um anzuzeigen, dass sie nicht mehr der Standardwert ist.