テキストボックスに入力されたテキストの一部を選択する
テキストボックスに入力されたテキストの一部を選択するコードを紹介します。
概要
テキストボックス内のテキストを部分選択する場合は、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を愛用