2012年10月7日日曜日

RichTextBox の特定文字列の色を変更する

□ RichTextBox の特定文字列の色を変更する Visual C# の RichTextBox で、特定の文字列に色を付ける方法について整理してみます。 ここでのやり方としては、RichTextBox の Find メソッドで特定の文字列を順次探し、それが見つかったら、その部分の色を変更するという流れになります。 /// /// RichTextBox の任意のキーワードを色付けします。 /// /// 色付けの対象となる RichTextBox コントロールです。 /// 色付けを行うキーワードです。 /// 色付けに使用するカラーです。 public static void Coloring(RichTextBox target, String keyword, Color color) { // found 変数では検索を行う文字位置の一つ手前を示します。最初は - 1 となります。 int found = -1; // キーワードが見つからなくなるまで繰り返します。 do { // 対象の RichTextBox から、キーワードが見つかる位置を探します。検索開始位置は、前回見つかった場所の次からとします。 found = target.Find(keyword, found + 1, RichTextBoxFinds.MatchCase); // キーワードが見つかった場合は、その色を変更します。 if (found >= 0) { target.SelectionStart = found; target.SelectionLength = keyword.Length; target.SelectionColor = color; } else { // キーワードが見つからなかった場合は、繰り返し処理を終了します。 break; } } while (true); } 例えばこのような感じにすることで、同じキーワードが RichTextBox.Text 内に複数現れた場合にも、繰り返し判定することで、それぞれについて色を設定することができます。 検索の際には、前回検索して見つかった位置(初回は -1)の次の位置から検索させることで、繰り返し処理を行うたびに、見つかった文字の次の位置(最初は先頭)から検索を行うようになっています。キーワードが見つからなかった場合は RichTextBox の Find メソッドは -1 を返すので、それによって色付けが全て終わったことを検知しています。

0 件のコメント:

コメントを投稿