2009-02-26 14 views
6

In C#, sto creando una finestra modulo per un messenger LAN con due caselle di testo. Devo creare una casella di testo particolare come di sola lettura, ma qualsiasi testo inviato ad esso appare grigio che non è desiderabile. C'è un modo che può essere prevenuto?Casella di testo di sola lettura in C#

risposta

0

Il colore grigio è indicativo dello stato ReadOnly della casella di testo. È un'indicazione visiva all'utente che non avrà bisogno di inserire il testo per scoprire che la casella di testo è in effetti, disabilitata.

Se è necessario solo il comportamento di sola lettura, è preferibile utilizzare un'etichetta.

6

Si potrebbe sostituirlo con un etichetta o sulla casella di testo nell'evento KeyPress, impostare gestito true:

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

Personalmente odio questo approccio perché l'utente pensa ancora di poter modificare il testo e quindi rimane sorpreso quando le lettere digitate non fanno nulla. –

+0

Sono d'accordo, ma sembra che la persona che ha posto la domanda sembrasse preoccupata per il testo grigio in una casella di testo disabilitata, questo è più semplice dell'ereditarietà e dell'override dell'evento paint. – benPearce

+0

ReadOnly = true è ancora più semplice –

2

È possibile impostare il colore del testo impostando il Casella di testoForeColor proprietà.

Ad esempio:

myTextBox.ForeColor = Color.Black

22

vorrei utilizzare una casella di testo e impostare ReadOnly su true, ForeColor a Color.Black, e BackColor Color.White. In questo modo puoi ancora selezionare il testo e copiarlo con Ctrl-C.

+0

thread precedente, ma l'ho trovato utile. La casella di testo sembra normale, tranne che non è possibile digitarla. Saluti! – Anders

1

Per mantenere la casella di testo bianca (o Finestra) quando è di sola lettura, è necessario impostare in modo esplicito la proprietà BackColor su Window. Per fare ciò, devi prima impostare il BackColor su un altro valore, quindi tornare a Window. La proprietà backcolor dovrebbe diventare in grassetto indicando che non è più il valore predefinito.

Problemi correlati