テキストボックスの文字の入力位置(キャレット)を取得・設定する [C#] TextBox

Windowsフォームアプリケーションのテキストボックスの文字の入力位置(キャレット)を取得、設定する方法を紹介します。

本記事では、Visual Studioで作成したC#のWindowsフォームアプリケーションのプロジェクトに記述するコードを記載します。
Windowsフォームアプリケーションのプロジェクトを作成する方法については、以下の記事を参照してください。

Windowsフォームアプリケーションのプロジェクト(ソリューション)を作成する。[C#]
Visual StudioでC#のWindowsフォームアプリケーションのプロジェクト(ソリューション)を作成する方法を記載します。 ...

文字の入力位置(キャレット)の取得

テキストボックスの文字の入力位置(キャレット)を取得するには、System.Windows.Forms名前空間のTextBoxクラスのSelectionStartプロパティを使用します。
SelectionStartプロパティは、文字の入力位置を0からのインデックスで返します。

文字の入力位置(キャレット)の設定

SelectionStartプロパティでは、テキストボックスの文字の入力位置(キャレット)を設定することもできます。

サンプルプログラム

テキストボックスの文字の入力位置(キャレット)を取得、設定するサンプルプログラムを作成します。

ユーザーインターフェース

作成するフォームには、文字列を入力するテキストボックス(textBox1)、文字の入力位置(キャレット)を取得するボタン(button1)、文字の入力位置(キャレット)を表示または入力するテキストボックス(numericUpDown1)、文字の入力位置(キャレット)を設定するボタン(button2)を配置します。

テキストボックスの文字の入力位置(キャレット)を取得、設定するサンプルプログラムのフォームデザイン

文字列を入力するテキストを編集するテキストボックス(textBox1)は、複数行入力できるようにしておきます。

複数行入力可能なテキストボックスの設定については、以下の記事を参考にしてください。

テキストボックスに複数行の文字列を入力できるように設定する [C#] TextBox
Windowsフォームアプリケーションのテキストボックス(TextBox)に改行(リターン)を入力できるようにする方法を紹介します。 ...

ソースコード

ボタンをクリックした時の処理を実装します。

プログラムの実行

作成したプロジェクトをビルドして実行(デバッグ)します。

テキストボックスの文字の入力位置(キャレット)を取得、設定するサンプルプログラムを実行して起動

文字列を入力するテキストボックス(textBox1)にテキストを入力します。

テキストボックスの文字の入力位置(キャレット)を取得、設定するサンプルプログラムで文字列を入力

取得ボタン(button1)をクリックすると、文字の入力位置(キャレット)が表示されます。

テキストボックスの文字の入力位置(キャレット)を取得、設定するサンプルプログラムで文字の入力位置(キャレット)位置を取得して表示

今度は文字の入力位置(キャレット)を入力します。

テキストボックスの文字の入力位置(キャレット)を取得、設定するサンプルプログラムで文字の入力位置(キャレット)位置を入力

設定ボタン(button2)をクリックすると、指定した位置にキャレットが移動します。

テキストボックスの文字の入力位置(キャレット)を取得、設定するサンプルプログラムで文字の入力位置(キャレット)位置を設定

SelectionStartプロパティには、テキストボックスに入力されている文字数を超える位置を指定してもエラーにはなりません。テキストの末尾が選択されます。

ただし、0未満の値を指定すると例外が発生します。

例外メッセージ「’-1′ の InvalidArgument=Value は ‘SelectionStart’ に対して有効ではありません。」

テキストボックスの文字の入力位置(キャレット)を取得、設定するサンプルプログラムでSelectionStartプロパティに0未満の値を設定した時の例外

本記事でご紹介した文字の入力位置(キャレット)の取得と設定は、System.Windows.Forms名前空間のRichTextBoxクラスにも適用できます。

TextBoxクラス(RichTextBoxクラス)には、SelectionStartプロパティの他に、テキストボックスの選択されているテキストの文字数を取得、設定するSelectionLengthプロパティ、テキストボックスの選択されているテキスト(文字列)を取得、設定するSelectedTextプロパティが用意されています。

SelectionLengthプロパティとSelectedTextプロパティについては、以下の記事を参考にしてください。

テキストボックスの選択されているテキストの文字数を取得・設定する [C#] TextBox
Windowsフォームアプリケーションのテキストボックスの選択されているテキストの文字数を取得、設定する方法を紹介します。 本記事では...
テキストボックスの選択されているテキスト(文字列)を取得・設定する [C#] TextBox
Windowsフォームアプリケーションのテキストボックスの選択されているテキスト(文字列)を取得、設定する方法を紹介します。 本記事で...