[C#][Windows Formsアプリ][TextBox] SelectionStartとSelectionLengthプロパティで選択開始位置や選択文字数を制御する

スポンサーリンク

はじめに

TextBox内で文字列を部分的に選択する際に重要なのが
SelectionStartSelectionLength プロパティです。
これらを使えば、選択開始位置と選択する文字数を自由に制御できます。

 

SelectionStart・SelectionLengthとは?

  • SelectionStart … 選択範囲の開始位置を表す(0始まり)
  • SelectionLength … 選択されている文字数を表す
例:TextBoxに「Hello World」と入力されている場合、
SelectionStart = 6, SelectionLength = 5 にすると「World」が選択されます。

 

基本の使い方

コード例

// "Hello World" の "World" を選択
textBox1.Text = "Hello World";
textBox1.SelectionStart = 6;   // 開始位置
textBox1.SelectionLength = 5;  // 選択文字数

この操作を行うと、TextBox上で「World」が反転表示されます。

 

実用例:検索語をハイライト

using System;
using System.Windows.Forms;

namespace SelectionSample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            textBox1.Text = "C# Windows Forms Programming";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string keyword = "Windows";
            int index = textBox1.Text.IndexOf(keyword);

            if (index >= 0)
            {
                textBox1.SelectionStart = index;
                textBox1.SelectionLength = keyword.Length;
            }
        }
    }
}

この例では、ボタンを押すと「Windows」という単語が自動的に選択されます。

 

SelectedTextとの関係

  • SelectionStart / SelectionLength … 選択位置や長さを指定・取得する
  • SelectedText … 実際に選択されている文字列を取得・置換する

両方を組み合わせることで「範囲を指定 → 選択された文字を加工」といった処理が可能になります。

 

注意点

  • 範囲外の値を設定すると、自動的に調整される
  • SelectionLength = 0 の場合は、単にカーソル位置を指定したことになる
  • 選択範囲を変更すると、既存の選択状態は上書きされる

 

まとめ

  • SelectionStart は選択開始位置、SelectionLength は選択する文字数を制御する
  • 検索結果のハイライトや部分置換に役立つ
  • SelectedText と組み合わせると文字操作がさらに強力になる

TextBoxで文字列編集や検索機能を実装する際には必ず押さえておきたいプロパティです。

 

Please follow and like us:

コメント

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