RichTextBox の特定文字列の色を変更する - Visual C# プログラミング

PROGRAM


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

Visual C# の RichTextBox で、特定の文字列に色を付ける方法について整理してみます。

ここでのやり方としては、RichTextBox の Find メソッドで特定の文字列を順次探し、それが見つかったら、その部分の色を変更するという流れになります。

/// <summary>

/// RichTextBox の任意のキーワードを色付けします。

/// </summary>

/// <param name="target">色付けの対象となる RichTextBox コントロールです。</param>

/// <param name="keyword">色付けを行うキーワードです。</param>

/// <param name="color">色付けに使用するカラーです。</param>

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 を返すので、それによって色付けが全て終わったことを検知しています。

 


[ もどる ]