0

C#.Net を使用して Windows フォーム アプリケーションを開発しています。コードの一部で、システム イベントをログに記録する関数を定義しました。この関数の本体は次のとおりです。

richTextBoxLog.Text += "-";
richTextBoxLog.Text += some logs and strings ...;
richTextBoxLog.Text += "." + new string(' ', 1000) + Environment.NewLine;
richTextBoxLog.Select(richTextBoxLog.GetFirstCharIndexFromLine(logCounter), richTextBoxLog.Lines[logCounter].Length);       
richTextBoxLog.SelectionBackColor = (logCounter % 2 == 0) ? Color.LightBlue: Color.LightGray;
logCounter++;
richTextBoxLog.ScrollToCaret();

の初期値logCounterはゼロです (最初のイベントの行は を参照していlogCounter=0ます)。奇数行の背景色は で、偶数行の背景色はColor.LightGrayですColor.LightBlue。ただし、以下に示すように、背面の色が適切に変更されません。

最初のイベント (偶数色) 2 番目のイベント (奇数色) 3 番目のイベント (偶数色) 第 4 イベント (奇数色) 第 5 イベント (偶数色)

この関数が (新しいテキスト行を追加するために) 呼び出されるたびrichTextBoxLog.Selectに、新しい行の開始インデックスと終了インデックスに従って の領域が更新されます。しかし、偶数行がテキスト ボックスに追加されると、前のすべての行の背景色が青色 (偶数色) に変わります。

よろしくお願いします。

4

2 に答える 2