none
Colorir determinada palavra em um texto no richTextBox em tempo real RRS feed

  • 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;        
         }     
        }
        
       }
    }

    sexta-feira, 14 de maio de 2010 20:28

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
    sábado, 15 de maio de 2010 14:39
  • 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
    sábado, 15 de maio de 2010 16:44

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
    sexta-feira, 14 de maio de 2010 20:36
  • nao, eu vou digitando e a palavra tem q mudar de cor no exato momento que eu terminar de digitá-la

    exatamente igual quando voce digita "int" no visual studio, ele imediatamente fica na cor azul.

    é isso que preciso.

    sacas?

    sábado, 15 de maio de 2010 13:15
  • 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
    sábado, 15 de maio de 2010 14:39
  • aqui deu certinho!

    vlw

    mais uma coisa, para deixar em negrito, como o metodo "Color." nao ha como né?

    tem umas que preciso deixar em negrito

    sábado, 15 de maio de 2010 16:33
  • 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
    sábado, 15 de maio de 2010 16:44
  • vlw, é isso aee!

    deu certo

    obg.

    domingo, 16 de maio de 2010 00:57