2009-02-26 14 views
6

En C#, estoy creando una ventana de formulario para un mensajero LAN con dos cuadros de texto. Necesito crear un cuadro de texto particular como de solo lectura, pero cualquier texto enviado a él aparece gris, lo que no es deseable. ¿Hay alguna manera que se pueda prevenir?Cuadro de texto de solo lectura en C#

Respuesta

0

El color gris es indicativo del estado ReadOnly del cuadro de texto. Es una indicación visual para el usuario que no necesitará ingresar texto para descubrir que el cuadro de texto está, de hecho, deshabilitado.

Si solo necesita el comportamiento de solo lectura, sería mejor usar una etiqueta en su lugar.

6

Se podía sustituirla por una etiqueta o en el cuadro de texto en el evento KeyPress, conjunto manejan true:

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

Personalmente odio este enfoque porque el usuario todavía piensa que puede editar el texto y luego se sorprende cuando las letras que escribe no hacen nada. –

+0

Estoy de acuerdo, pero parece que la persona que hizo la pregunta parecía preocupada por el texto gris en un cuadro de texto desactivado, esto es más simple que heredar y anular el evento de pintura. – benPearce

+0

ReadOnly = true es incluso más fácil –

2

puede establecer el color del texto ajustando el cuadro de texto ForeColor propiedad.

Por ejemplo:

myTextBox.ForeColor = Color.Black

22

me gustaría utilizar un cuadro de texto y establecer ReadOnly en true, ForeColor a Color.Black, y BackColor a Color.white. De esta forma, puede seleccionar el texto y copiarlo con Ctrl-C.

+0

Hilo anterior, pero encontré esto útil. El cuadro de texto se ve normal, excepto que no puede escribir en él. ¡Aclamaciones! – Anders

1

Para mantener el cuadro de texto en blanco (o Ventana) cuando es de solo lectura, debe establecer explícitamente la propiedad BackColor en Ventana. Para hacer esto, primero debe establecer BackColor en algún otro valor, luego vuelva a Window. La propiedad de color de fondo debe ponerse en negrita para indicar que ya no es el valor predeterminado.

Cuestiones relacionadas