Estou tentando colorir partes de uma string para ser anexada a um RichTextBox. Eu tenho uma corda feita de cordas diferentes.
string temp = "[" + DateTime.Now.ToShortTimeString() + "] " +
userid + " " + message + Environment.NewLine;
É assim que a mensagem ficaria depois de construída.
[21:23] Usuário: minha mensagem aqui.
Quero que tudo dentro e incluindo os colchetes [9:23] seja de uma cor, 'usuário' seja outra cor e a mensagem seja de outra cor. Então, gostaria que a string fosse acrescentada ao meu RichTextBox.
Como posso fazer isso?
Respostas:
Aqui está um método de extensão que sobrecarrega o
AppendText
método com um parâmetro de cor:E é assim que você o usaria:
Observe que você pode notar alguma oscilação se estiver enviando muitas mensagens. Consulte este artigo do canto C # para obter ideias sobre como reduzir a oscilação de RichTextBox.
fonte
box.Text += mystring
e assim todas as cores desapareceram. Quando substituí isso porbox.AppendText(mystring)
, funcionou como um encanto.AppendText(string text)
com WinFormsEu expandi o método com fonte como parâmetro:
fonte
Esta é a versão modificada que coloquei no meu código (estou usando .Net 4.5), mas acho que deve funcionar no 4.0 também.
Diferenças com o original:
fonte
Acho que modificar um "texto selecionado" em um RichTextBox não é a maneira certa de adicionar texto colorido. Portanto, aqui está um método para adicionar um "bloco de cor":
Do MSDN :
Então eu acho que você tem que dividir sua corda dependendo da cor das partes e criar quantos
Run
objetos forem necessários.fonte
É trabalho para mim! Espero que seja útil para você!
fonte
Selecionando o texto como dito por alguém, a seleção pode aparecer momentaneamente. Em
Windows Forms applications
não há outras soluções para o problema, mas hoje eu encontrei um mau, trabalho, maneira de resolver: você pode colocar umPictureBox
em sobreposição com aRichtextBox
com a imagem de que, durante a seleção ea cor ou fonte mudando, tornando-se depois reaparecerão todos, quando a operação for concluída.O código está aqui ...
Melhor é usar o WPF; esta solução não é perfeita, mas para o Winform funciona.
fonte
fonte
Usando Seleção em WPF, agregando de várias outras respostas, nenhum outro código é necessário (exceto Severity enum e função GetSeverityColor)
fonte
Criei esta função após pesquisar na internet, pois queria imprimir uma string XML ao selecionar uma linha em uma exibição de grade de dados.
e é assim que você chama
fonte