2015-07-18 2 views
0

Я хотел бы знать, как изменить цвет некоторых символов в richtextbox.C# Richtextbox шрифт и цвет для специальных символов

Я хочу изменить цвет для четырех ключевых слов: "CONDITION","FIRSTCONDITION","SECONDCONDITION","ACTION"

Вот мой текст в RichTextBox

"If (CONDITION) then" 
"And (FIRSTCONDITION)&(SECONDCONDITION)" 
"While (CONDITION) do(ACTION)" 

В последний мой код

public Form1() 
{ 
    InitializeComponent(); 


} 

private void MyRichTextBox(object sender, EventArgs e) 
{ 
    richTextBox1.Font = new Font("Arial", 12f, FontStyle.Bold); 
    string[] words = 
    { "If (CONDITION) then","And (FIRSTCONDITION)&(SECONDCONDITION)", 
"While (CONDITION) do(ACTION)" 
    }; 

    for (int i = 0; i < words.Length; i++) 
    { 
    string word = words[i]; 
    { 
     richTextBox1.AppendText(word); 
    } 
    } 
MyRichTextBox.Settings.Keywords.Add("CONDITION"); 
MyRichTextBox.Settings.Keywords.Add("FIRSTCONDITION"); 
MyRichTextBox.Settings.Keywords.Add("SECONDCONDITION"); 
MyRichTextBox.Settings.Keywords.Add("ACTION"); 
MyRichTextBox.Settings.KeywordColor = Color.Blue; 
} 

Спасибо за вашу помощь ,

ответ

1

Это должно работать,

using System.Text.RegularExpressions; 

List<string> l = new List<string>(); 
     l.Add("CONDITION"); 
     l.Add("FIRSTCONDITION"); 
     l.Add("SECONDCONDITION"); 
     l.Add("ACTION"); 

      foreach (var v in l) 
      { 
       int count = Regex.Matches(rtbxTest.Text, v).Count;//count occurrences of string 
       int WordLen = v.Length; 
       int startFrom=0; 
       for (int i = 0; i < count; i++)  
       { 
        rtbxTest.SelectionStart = rtbxTest.Text.IndexOf(v, startFrom); 
        rtbxTest.SelectionLength = WordLen; 
        rtbxTest.SelectionColor = Color.Red; 
        startFrom = rtbxTest.Text.IndexOf(v, startFrom) + WordLen; 

       } 
      } 

Это находит все вхождения конкретной строки и меняет свой цвет.

+0

@ learningNew, что работает. Спасибо за вашу помощь :) –

Смежные вопросы