0

私は現在、メモ帳++と同様の動作をするソフトウェアを開発しようとしています。「着色」の部分については、正規表現と、各単語の正規表現と色を含む外部ファイルを使用します。

ファイルは次のようになります。

<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 に答える