[C#][Windows Formsアプリ][RichTextBox] Find/Selectメソッドでテキストを検索したり、特定の範囲を選択したりする

スポンサーリンク

はじめに

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() … 開始位置と長さを指定して選択範囲を設定する
  • 検索結果の装飾やハイライトには、SelectionColorSelectionBackColor を併用
Please follow and like us:

コメント

タイトルとURLをコピーしました