0

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

该文件如下所示:

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

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

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'中的最后一个字符串正常工作。然而; 似乎数组中的其他对象要么被覆盖,要么被忽略,因为与其模式匹配的单词没有被着色。

怎么了?

在此先感谢,
- 拉斯穆斯。

4

1 回答 1

2

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

 while (matches.Success)

应该是这样的。。

            // Use foreach loop.
            foreach (Match match in matches)
            {
                if(match.Success)
                {
                    //Change color here...
                }
            }
于 2012-09-15T14:12:21.423 回答