Usuário com melhor resposta
Colorir determinada palavra em um texto no richTextBox em tempo real

Pergunta
-
dado um texto dentro de um richtextbox preciso colorir determinadas substring dentro dele, isso deve acontecer no momento que se digita o texto!
tentei fazer o que esta nesse site porem nao fucionou..
http://www.c-sharpcorner.com/uploadfile/duncanharris/syntaxhighlightinrichtextboxp112012005050840am/syntaxhighlightinrichtextboxp1.aspx
veja um print;
http://i43.tinypic.com/357koyu.png
eu digito o texto e clico no batao para que as substrings fiquem nas cores certas, elas ficam, so que sao adicionadas ao fim das originais,
teria que substituir as substrings que foram digitadas.
tentei alguns metodos porem nao funcionou.
como poderei fazer.
O CODIGO É O SEGUINTE
private void button1_Click(object sender, EventArgs e) { string[] ArrayLines = richTextBox1.Lines; for (int cont = 0; cont < ArrayLines.Length; cont++) { string linha = ArrayLines[cont]; Regex r = new Regex("([\\t(){};])"); String[] tokens = r.Split(linha); foreach (string token in tokens) { richTextBox1.SelectionColor = Color.Black; if (token == "//" || token.StartsWith("//")) { int index = linha.IndexOf("//"); string comment = linha.Substring(index , linha.Length - index); richTextBox1.SelectionColor = Color.Green; richTextBox1.SelectedText = comment; } } } }
Respostas
-
Cara eu já fiz um código desse ha um bom tempo atrás, para mudar cor de um texto quando digitado no RichTextBox.
Não usei expressão regular, deve ter muitas outras formas de fazer mais se ajudar em algo, ta ai.
private void MudarCorTexto(RichTextBox m_rtb, string texto, Color cor) { int varStart = 0; int varIndex = 0; int varCursor = m_rtb.SelectionStart; m_rtb.SelectionColor = Color.Black; while ((varIndex != -1) && (varStart < m_rtb.Text.Length)) { varIndex = m_rtb.Find(texto, varStart, RichTextBoxFinds.None); if (varIndex != -1) { m_rtb.SelectionColor = cor; m_rtb.SelectedText = texto; varStart = varIndex + texto.Length; } } m_rtb.SelectionStart = varCursor; m_rtb.SelectionColor = Color.Black; } //Evento TextChanged private void richTextBox1_TextChanged(object sender, EventArgs e) { if (richTextBox1.Text.Length > 0) MudarCorTexto(richTextBox1,"void", Color.Red); }
msn: poseidonfba@hotmail.com- Marcado como Resposta Elton Bonato domingo, 16 de maio de 2010 00:57
-
Segue ela para aceitar em negrito, veja que adicionei mais um parametro Boolean Negrito, ai vc informa se quer ou não.
private void MudarCorTexto(RichTextBox m_rtb, string texto, Color cor, Boolean Negrito) { int varStart = 0; int varIndex = 0; int varCursor = m_rtb.SelectionStart; m_rtb.SelectionColor = Color.Black; while ((varIndex != -1) && (varStart < m_rtb.Text.Length)) { varIndex = m_rtb.Find(texto, varStart, RichTextBoxFinds.None); if (varIndex != -1) { m_rtb.SelectionColor = cor; if (Negrito) m_rtb.SelectionFont = new Font(m_rtb.Font.Name, m_rtb.Font.Size, FontStyle.Bold); m_rtb.SelectedText = texto; varStart = varIndex + texto.Length; } } m_rtb.SelectionStart = varCursor; m_rtb.SelectionColor = Color.Black; m_rtb.SelectionFont = new Font(m_rtb.Font.Name, m_rtb.Font.Size, FontStyle.Regular); }
msn: poseidonfba@hotmail.com- Marcado como Resposta Elton Bonato domingo, 16 de maio de 2010 00:57
Todas as Respostas
-
Deixa ve se entendi, você terá um textbox, um botão e um richtextbox no form.
O RichTextBox terá um texto, vc digitará uma palavra no textbox e quando clicar no botão, todas as palavras que tiverem no RichTextBox igual a que vc digitou mudarão a cor.
É isso?
msn: poseidonfba@hotmail.com -
-
Cara eu já fiz um código desse ha um bom tempo atrás, para mudar cor de um texto quando digitado no RichTextBox.
Não usei expressão regular, deve ter muitas outras formas de fazer mais se ajudar em algo, ta ai.
private void MudarCorTexto(RichTextBox m_rtb, string texto, Color cor) { int varStart = 0; int varIndex = 0; int varCursor = m_rtb.SelectionStart; m_rtb.SelectionColor = Color.Black; while ((varIndex != -1) && (varStart < m_rtb.Text.Length)) { varIndex = m_rtb.Find(texto, varStart, RichTextBoxFinds.None); if (varIndex != -1) { m_rtb.SelectionColor = cor; m_rtb.SelectedText = texto; varStart = varIndex + texto.Length; } } m_rtb.SelectionStart = varCursor; m_rtb.SelectionColor = Color.Black; } //Evento TextChanged private void richTextBox1_TextChanged(object sender, EventArgs e) { if (richTextBox1.Text.Length > 0) MudarCorTexto(richTextBox1,"void", Color.Red); }
msn: poseidonfba@hotmail.com- Marcado como Resposta Elton Bonato domingo, 16 de maio de 2010 00:57
-
-
Segue ela para aceitar em negrito, veja que adicionei mais um parametro Boolean Negrito, ai vc informa se quer ou não.
private void MudarCorTexto(RichTextBox m_rtb, string texto, Color cor, Boolean Negrito) { int varStart = 0; int varIndex = 0; int varCursor = m_rtb.SelectionStart; m_rtb.SelectionColor = Color.Black; while ((varIndex != -1) && (varStart < m_rtb.Text.Length)) { varIndex = m_rtb.Find(texto, varStart, RichTextBoxFinds.None); if (varIndex != -1) { m_rtb.SelectionColor = cor; if (Negrito) m_rtb.SelectionFont = new Font(m_rtb.Font.Name, m_rtb.Font.Size, FontStyle.Bold); m_rtb.SelectedText = texto; varStart = varIndex + texto.Length; } } m_rtb.SelectionStart = varCursor; m_rtb.SelectionColor = Color.Black; m_rtb.SelectionFont = new Font(m_rtb.Font.Name, m_rtb.Font.Size, FontStyle.Regular); }
msn: poseidonfba@hotmail.com- Marcado como Resposta Elton Bonato domingo, 16 de maio de 2010 00:57
-