代码之家  ›  专栏  ›  技术社区  ›  Kroll DU

C#特殊字符的Richtextbox字体和颜色

  •  0
  • Kroll DU  · 技术社区  · 9 年前

    我想知道如何更改richtextbox中某些字符的颜色。

    我想更改四个关键词的颜色: "CONDITION","FIRSTCONDITION","SECONDCONDITION","ACTION"

    这是我在Richtext框中的文本

    "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 回复  |  直到 9 年前
        1
  •  1
  •   Kryptonian    9 年前

    这应该起作用,

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

    这将查找特定字符串的所有出现并更改其颜色。