Estoy tratando de colorear partes de una cadena para agregarlas a RichTextBox. Tengo una cuerda construida a partir de diferentes cuerdas.
string temp = "[" + DateTime.Now.ToShortTimeString() + "] " +
userid + " " + message + Environment.NewLine;
Así es como se vería el mensaje una vez construido.
[9:23 pm] Usuario: mi mensaje aquí.
Quiero que todo lo que esté dentro de los corchetes [9:23], incluido el mismo, sea de un color, que el "usuario" sea de otro color y que el mensaje sea de otro color. Entonces me gustaría que la cadena se agregara a mi RichTextBox.
¿Cómo puedo lograr esto?
Respuestas:
Aquí hay un método de extensión que sobrecarga el
AppendText
método con un parámetro de color:Y así es como lo usarías:
Tenga en cuenta que puede notar un parpadeo si está enviando muchos mensajes. Consulte este artículo de C # Corner para obtener ideas sobre cómo reducir el parpadeo de RichTextBox.
fuente
box.Text += mystring
y así desaparecieron todos los colores. Cuando reemplacé esto conbox.AppendText(mystring)
, funcionó como un encanto.AppendText(string text)
con WinFormsHe expandido el método con fuente como parámetro:
fuente
Esta es la versión modificada que puse en mi código (estoy usando .Net 4.5) pero creo que también debería funcionar en 4.0.
Diferencias con el original:
fuente
Creo que modificar un "texto seleccionado" en un RichTextBox no es la forma correcta de agregar texto en color. Así que aquí hay un método para agregar un "bloque de color":
Desde MSDN :
Así que creo que tienes que dividir tu cadena según el color de las partes y crear tantos
Run
objetos como necesites.fuente
¡Es un trabajo para mí! ¡Espero que te sea de utilidad!
fuente
Al seleccionar texto como lo dijo alguien, puede que la selección aparezca momentáneamente. En
Windows Forms applications
no hay otras soluciones para el problema, pero hoy he encontrado un mal, de trabajo, manera de resolver: se puede poner unaPictureBox
en superposición a laRichtextBox
con la captura de pantalla de si, durante la selección y el color o la fuente cambiante, por lo que es después de reaparecerán todos, cuando finalice la operación.El código está aquí ...
Mejor es usar WPF; esta solución no es perfecta, pero para Winform funciona.
fuente
fuente
Al usar Selection en WPF, agregando desde varias otras respuestas, no se requiere ningún otro código (excepto la enumeración de gravedad y la función GetSeverityColor)
fuente
Creé esta función después de investigar en Internet, ya que quería imprimir una cadena XML cuando selecciona una fila de una vista de cuadrícula de datos.
y así es como lo llamas
fuente