テキストボックスに入力されたテキストの一部を選択する - C#

テキストボックスに入力されたテキストの一部を選択するコードを紹介します。

概要

テキストボックス内のテキストを部分選択する場合は、TextBoxのSelectionStartプロパティと、SelectionLegthプロパティを利用します。

プログラム

UI

下図のUIを作成します。テキストボックスを3つ、ボタンを1つ配置します。

コード

下記のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace TextBoxDemo
{
  public partial class FormSelection : Form
  {
    public FormSelection()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      int start = Convert.ToInt32(textBox1.Text);
      int count = Convert.ToInt32(textBox2.Text);

      textBox3.Focus();
      textBox3.SelectionStart = start;
      textBox3.SelectionLength = count;

    }
  }
}

解説

  int start = Convert.ToInt32(textBox1.Text);
  int count = Convert.ToInt32(textBox2.Text);
textBox1, textBox2に入力された値(数値)をint型に変換し変数に格納します。

  textBox3.Focus();
下部のテキストボックス(textBox3)にフォーカスを移します。この処理がなくても動作しますが、フォーカス移動した際に選択が解除されてしまい動作確認しづらいため、今回はフォーカス処理を入れています。

  textBox3.SelectionStart = start;
  textBox3.SelectionLength = count;
textBox3のstart番目の文字からcount個を選択します。アプリの動作は、textBox1に入力された数値の文字数目から、textBox2に入力された数値の個数文字を選択します。

実行結果

プロジェクトを実行します。下図のフォームが表示されます。


テキストボックスに値を入力します。今回は以下の文字を入力しました。
  • textBox1 : 4
  • textBox2 : 5
  • textBpx3 : しろくまは北極圏に生息しています


[Select]ボタン(button1)をクリックします。下部のテキストボックスの一部分が選択されました。textBox1に入力した数値の文字位置からtextBox2に入力した数値の文字数選択されていることが確認できます。


プログラムコードから、テキストボックスの一部を選択することができました。

複数行テキストボックスの場合

複数行テキストの場合も同様の処理です。
下図のUIを作成します。


コードは同じものを利用します。

プロジェクトを実行します。下図のフォームが表示されます。


テキストを入力します。


上部のテキストボックスに選択開始の位置と、選択範囲の長さを数値で入力します。入力後、[Select]ボタンをクリックします。テキストボックス内のテキストが選択されます。


選択開市の数値大きくし、画面外が選択されるようにします。この状態で[Select]ボタンをクリックします。画面外のテキストが選択されますが自動でスクロールして選択範囲が見える動作にはなっていないことがわかります。


スクロールバーをドラッグしてスクロールすると、テキストが選択されていることが確認できます。


著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2015-01-20
iPentec all rights reserverd.