Windowsフォームアプリケーションのテキストボックスの選択されているテキストの文字数を取得、設定する方法を紹介します。
本記事では、Visual Studioで作成したC#のWindowsフォームアプリケーションのプロジェクトに記述するコードを記載します。
Windowsフォームアプリケーションのプロジェクトを作成する方法については、以下の記事を参照してください。
選択されている文字数の取得
テキストボックスの選択されている文字数を取得するには、System.Windows.Forms名前空間のTextBoxクラスのSelectionLengthプロパティを使用します。
SelectionLengthプロパティは、選択されている文字数を数値(int型)で返します。
1 2 |
// テキストボックスの選択されている文字数を取得する var selectionLength = textBox1.SelectionLength; |
選択する文字数の設定
SelectionLengthプロパティでは、テキストボックスの選択する文字数を設定することもできます。
1 2 |
// 選択する文字数を5文字に設定する textBox1.SelectionLength = 5; |
1 2 |
// テキストの選択を解除する(選択する文字数を0文字に設定する) textBox1.SelectionLength = 0; |
サンプルプログラム
テキストボックスの選択されている文字数を取得、設定するサンプルプログラムを作成します。
ユーザーインターフェース
作成するフォームには、文字列を入力するテキストボックス(textBox1)、選択されている文字数を取得するボタン(button1)、選択されている文字数を表示、または選択する文字数を入力するテキストボックス(numericUpDown1)、選択する文字数を設定するボタン(button2)を配置します。
文字列を入力するテキストを編集するテキストボックス(textBox1)は、複数行入力できるようにしておきます。
複数行入力可能なテキストボックスの設定については、以下の記事を参考にしてください。
ソースコード
ボタンをクリックした時の処理を実装します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
using System; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { // コンストラクタ public Form1() { InitializeComponent(); // 垂直スクロールバーを表示する this.textBox1.ScrollBars = ScrollBars.Vertical; // 文字の入力位置を右揃えに設定する this.numericUpDown1.TextAlign = HorizontalAlignment.Right; this.button1.Text = "取得"; this.button2.Text = "設定"; } // 取得ボタンをクリックした時のイベントメソッド private void button1_Click(object sender, EventArgs e) { try { // 選択されている文字数を取得する int length = this.textBox1.SelectionLength; this.numericUpDown1.Value = length; this.textBox1.Focus(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } // 設定ボタンをクリックした時のイベントメソッド private void button2_Click(object sender, EventArgs e) { try { // 選択されている文字数を設定する int length = (int)this.numericUpDown1.Value; this.textBox1.SelectionLength = length; this.textBox1.Focus(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } } |
プログラムの実行
作成したプロジェクトをビルドして実行(デバッグ)します。
文字列を入力するテキストボックス(textBox1)にテキストを入力します。
テキスト(文字列)を選択します。
取得ボタン(button1)をクリックすると、選択されている文字数が表示されます。
今度は選択する文字数を入力します。
設定ボタン(button2)をクリックすると、指定した文字数が選択されます。
SelectionLengthプロパティには、テキストボックスに入力されている文字数を超える位置を指定してもエラーにはなりません。テキストの末尾が選択されます。
ただし、0未満の値を指定すると例外が発生します。
1 |
this.textBox1.SelectionLength = -1; |
例外メッセージ「’-1′ の InvalidArgument=Value は ‘SelectionLength’ に対して有効ではありません。」
本記事でご紹介した選択されている文字数の取得と設定は、System.Windows.Forms名前空間のRichTextBoxクラスにも適用できます。
TextBoxクラス(RichTextBoxクラス)には、SelectionLengthプロパティの他に、テキストボックスの文字の入力位置(キャレット)を取得、設定するSelectionStartプロパティ、テキストボックスの選択されているテキスト(文字列)を取得、設定するSelectedTextプロパティが用意されています。
SelectionLengthプロパティとSelectedTextプロパティについては、以下の記事を参考にしてください。