.NET TIPS テキストボックスのキャレットを文字列の末尾に移動させるには? - C# VB.NET Windowsフォーム

 

.NET TIPS

テキストボックスのキャレットを文字列の末尾に移動させるには?

デジタルアドバンテージ 一色 政彦
2005/02/25

 Windowsフォームで使用するテキストボックスは、次の画面例のように、新たにフォーカスを受け取ると、テキストボックス内に入力された文字列全体を選択状態にする仕様になっている。

 この仕様では、ユーザーの入力により既存の文字列が消えてしまう。本稿では、テキストボックスに入力フォーカスが移動した際に文字列を全選択せず、次の画面のように、その文字列の末尾にキャレットを移動する方法について解説する。

 まず、キャレットの位置の移動はテキストボックス(TextBoxコントロール)のSelectメソッドにより可能だ。このメソッド呼び出しを、テキストボックスがフォーカスを受け取ったときに発行されるEnterイベントのイベント・ハンドラ内に記述すればよい。このイベント・ハンドラは具体的には次のようになる。

private void textBox2_Enter(object sender, System.EventArgs e)
{
  this.textBox2.Select(this.textBox2.Text.Length, 0);
}
フォーカスを受けたときにテキストボックス文字列の末尾にキャレットを移動するコード(C#)

Private Sub TextBox2_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.Enter
  Me.TextBox2.Select(Me.TextBox2.Text.Length, 0)
End Sub
フォーカスを受けたときにテキストボックス文字列の末尾にキャレットを移動するコード(VB.NET)

 テキストボックスのSelectメソッドはテキストを範囲選択するためのメソッドであるが、本稿ではこれをキャレットの移動に使っている。Selectメソッドでは、その第1パラメータに選択開始位置を指定し、第2パラメータに選択文字数を示す。なお、開始位置のインデックス値は、文字列の先頭が「0」で、その最後尾が文字列の長さの値(例えば3文字なら「3」)となる。

 上記コードでは、このSelectメソッドの第1パラメータに「文字列の長さ」の値(テキストボックスのLengthプロパティ)を、第2パラメータに「0」を指定している。つまり、文字列の最後尾から0文字分だけ、文字列を範囲選択しているわけである。これにより、(実質的には選択する文字列はなく)キャレットが末尾に移動する。

 なお、テキストボックスのSelectionStartプロパティを使うことでも、文字列の選択開始位置を指定できるので、上記コードのSelectメソッド呼び出しを次のように書き換えることもできる。

【C#の場合】
this.textBox2.SelectionStart = this.textBox2.Text.Length
【VB.NETの場合】
Me.TextBox2.SelectionStart = Me.TextBox2.Text.Length

 このコードでもSelectメソッドの場合と同じように、キャレットがテキストボックスの文字列の末尾に移動する。End of Article

カテゴリ:Windowsフォーム 処理対象:テキストボックス
使用ライブラリ:TextBoxコントロール



TechTargetジャパン

Insider.NET フォーラム 新着記事

  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える

Insider.NET 記事ランキング

本日 月間