2009-02-26 13 views
6

Tworzę okno formularza dla komunikatora LAN z dwoma polami tekstowymi. Muszę utworzyć konkretny tekst jako tylko do odczytu, ale każdy nadesłany tekst jest szary, co nie jest pożądane. Czy istnieje sposób, któremu można zapobiec?Pole tekstowe tylko do odczytu w języku C#

Odpowiedz

0

Szary kolor wskazuje stan ReadOnly w polu tekstowym. Jest to wizualne wskazanie dla użytkownika, który nie będzie musiał wprowadzać tekstu, aby odkryć, że pole tekstowe jest w rzeczywistości wyłączone.

Jeśli potrzebujesz tylko zachowania tylko do odczytu, lepiej byłoby użyć etykiety zamiast tego.

6

Można wymienić go na etykiecie lub na polu w przypadku KeyPress, zestaw obsługiwane true:

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

Ja osobiście nienawidzę tego podejścia, ponieważ użytkownik nadal uważa, że ​​może edytować tekst, a następnie zostaje zaskoczony, gdy litery, które wpisują, nie robią nic. –

+0

Zgadzam się, ale wydaje się, że osoba zadająca pytanie wydawała się zaniepokojona szarym tekstem w wyłączonym polu tekstowym, jest to prostsze niż dziedziczenie i przesłonięcie zdarzenia malowania. – benPearce

+0

ReadOnly = true jest jeszcze łatwiejsze. –

2

Można ustawić kolor tekstu poprzez ustawienie pole tekstoweForeColor własność.

Na przykład:

myTextBox.ForeColor = Color.Black

22

użyłbym pole tekstowe i ustawić tylko do odczytu do prawdziwego, ForeColor do Color.Black i Backcolor do Color.White. W ten sposób możesz wybrać tekst i skopiować go za pomocą Ctrl-C.

+0

Starszy wątek, ale uznałem to za użyteczne. Pole tekstowe wygląda normalnie, z wyjątkiem tego, że nie możesz go wpisać. Twoje zdrowie! – Anders

1

Aby pole tekstowe było białe (lub okno), gdy jest tylko do odczytu, należy jawnie ustawić właściwość BackColor na okno. Aby to zrobić, musisz najpierw ustawić kolor BackColor na inną wartość, a następnie wrócić do okna. Właściwość backcolor powinna zostać pogrubiona, wskazując, że nie jest to już wartość domyślna.

Powiązane problemy