RichTextbox着色行为

时间:2012-09-15 13:41:23

标签: c# regex windows richtextbox

我目前正在尝试开发一种行为类似于Notepad ++的软件。关于'着色'部分,我使用正则表达式和包含正则表达式的外部文件。每个单词的颜色。

该文件如下所示:

<script&blue
/>&blue
\".*?\"&red

然后软件读取文件并将其转换为字符串数组'string []',方法是将其拆分为每个换行符。此数组称为“校正器”。然后我使用以下方法来查找&amp;设置匹配正则表达式模式的每个单词的颜色:

foreach (string corrector in Correctors) {
    string[] spTxt = corrector.Split('&');

    Match matches = Regex.Match(rtb_Main.Text, spTxt[0]);
    Color color = Color.FromName(spTxt[1]);

    while (matches.Success)
    {
        rtb_Main.SelectionStart = matches.Index;
        rtb_Main.SelectionLength = matches.Length;

        rtb_Main.SelectionColor = color;
        matches = matches.NextMatch();
    }
}

这是问题发生的地方。该方法正如数组'Correctors'中的最后一个字符串所假设的那样。然而;似乎数组中的其他对象被覆盖或被忽略,因为匹配其模式的单词没有被着色。

有什么问题?

提前致谢,
- Rasmus。

1 个答案:

答案 0 :(得分:2)

编译时没有收到任何错误。我的意思是说你是怎么得到的:

 while (matches.Success)

应该是这样的..

            // Use foreach loop.
            foreach (Match match in matches)
            {
                if(match.Success)
                {
                    //Change color here...
                }
            }