はじめに
RichTextBoxでテキストを検索したり、特定の範囲を選択したりするために使われるのが
Find() メソッドと Select() メソッドです。
これらを活用すると、特定の文字列を探してハイライトしたり、選択範囲を指定したりできます。
Find() メソッドとは?
Find() メソッドは、RichTextBox内から特定の文字列を検索し、その文字列の位置を返します。
該当するテキストが見つかると、その部分が自動的に選択状態になります。
構文
int position = richTextBox1.Find("検索文字列");
主なオーバーロード
Find(string text)— 指定した文字列を検索Find(string text, int start)— 指定位置から検索Find(string text, RichTextBoxFinds options)— 大文字小文字の区別などのオプション指定
例:単純な検索
int index = richTextBox1.Find("テスト");
if (index != -1)
{
MessageBox.Show("見つかりました!");
}
else
{
MessageBox.Show("見つかりません。");
}
このコードでは、「テスト」という文字列を検索し、見つかった場合はメッセージを表示します。
検索オプション(RichTextBoxFinds)
Find() メソッドでは、検索の挙動を細かく制御するために RichTextBoxFinds 列挙体を使用できます。
| 値 | 説明 |
|---|---|
MatchCase |
大文字と小文字を区別して検索 |
WholeWord |
単語全体に一致する場合のみ検索 |
NoHighlight |
検索しても選択を行わない |
例:大文字小文字を区別して検索
int index = richTextBox1.Find("Hello", RichTextBoxFinds.MatchCase);
Select() メソッドとは?
Select() メソッドは、RichTextBox内で選択範囲をプログラム的に指定します。
開始位置と選択する文字数を引数として渡します。
構文
richTextBox1.Select(int start, int length);
例:最初の5文字を選択
richTextBox1.Select(0, 5);
このコードを実行すると、テキストの最初の5文字が選択状態になります。
実用例:検索してハイライト表示
using System;
using System.Drawing;
using System.Windows.Forms;
namespace RichTextBoxFindSelectSample
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
richTextBox1.Text = "C#でWindows Formsアプリを作るのは楽しいです。\nC#は便利な言語です。";
}
private void buttonFind_Click(object sender, EventArgs e)
{
string target = textBoxKeyword.Text;
int index = richTextBox1.Find(target, RichTextBoxFinds.None);
if (index != -1)
{
// 見つかった部分を黄色で強調表示
richTextBox1.SelectionBackColor = Color.Yellow;
}
else
{
MessageBox.Show("見つかりませんでした。");
}
}
}
}
この例では、検索ボタンを押すと指定した文字列を検索し、該当箇所を黄色でハイライトします。
注意点
Find()は見つからない場合に-1を返す- 検索結果は自動的に選択状態になるため、装飾を付けるときは
Selection*系プロパティを使う - 複数箇所をハイライトするには、ループで
Find()を繰り返す必要がある
まとめ
Find()… 指定した文字列を検索し、位置を返すSelect()… 開始位置と長さを指定して選択範囲を設定する- 検索結果の装飾やハイライトには、
SelectionColorやSelectionBackColorを併用
Please follow and like us:

コメント