方法: Windows フォーム TextBox コントロールでのカーソル位置を制御する

Windows フォームの TextBox コントロールでは、最初にフォーカスを受け取ったとき、既存のテキストの左側がテキスト ボックス内の既定のカーソル位置になります。 ユーザーは、キーボードまたはマウスを使用してカーソル位置を移動できます。 テキスト ボックスからフォーカスが離れた後、再度フォーカスが置かれた場合、ユーザーが最後にカーソルを置いた場所がカーソル位置になります。

この動作は、場合によってはユーザーに混乱を与えることがあります。 ワード プロセッシング アプリケーションでは、新しい文字が既存のテキストの後に表示されるほうが自然でしょう。 データ入力アプリケーションの場合は、新しい文字によって既存のエントリが置き換えられるのが一般的かもしれません。 SelectionStart プロパティと SelectionLength プロパティを使用すれば、この動作を目的に合わせて変更することができます。

TextBox コントロールでのカーソル位置を制御するには

  1. SelectionStart プロパティに適切な値を設定します。 0 にした場合、カーソルは最初の文字のすぐ左に配置されます。

  2. (オプション) SelectionLength プロパティを、選択するテキストの長さに設定します。

    次のコードの場合、カーソル位置は常に 0 に戻されます。 TextBox1_Enter イベント ハンドラーはコントロールにバインドされる必要があります。詳細については、「Windows フォーム内でのイベント ハンドラーの作成」を参照してください。

    Private Sub TextBox1_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Enter  
       TextBox1.SelectionStart = 0  
       TextBox1.SelectionLength = 0  
    End Sub  
    
    private void textBox1_Enter(Object sender, System.EventArgs e) {  
       textBox1.SelectionStart = 0;  
       textBox1.SelectionLength = 0;  
    }  
    
    private:  
       void textBox1_Enter(System::Object ^  sender,  
          System::EventArgs ^  e)  
       {  
          textBox1->SelectionStart = 0;  
          textBox1->SelectionLength = 0;  
       }  
    

カーソル位置が既定で表示されるようにする

既定では、TextBox のカーソル位置は、TextBox コントロールがタブ オーダーの先頭にある場合にのみ、新規フォームに表示されます。 その他の場合は、キーボードかマウスを使用してフォーカスを TextBox に移動した場合にのみ、カーソル位置が表示されます。

テキスト ボックスのカーソル位置が新規フォームに既定で表示されるようにするには

  • TextBox コントロールの TabIndex プロパティを 0 に設定します。

関連項目