2009年10月29日木曜日

VB.NET Enter時フォーカス遷移

昨日の続きで、試験で使用するソースについてメモ。

基本的にフォーカスを遷移する際にはTABを使うので、
遷移順位を付ける「タブオーダー」で並べ替えておきます。
ですが、一つの画面で複数の項目を素早く入力する場合には、
入力後の「Enter」で次のテキストボックスやボタンに遷移しておくべきです。

というわけで、その為のソースです。
2通りの方法がありますが、好きな方を選ぶと良いと思います。

1つ目:「KeyDown」での取得・遷移。
' ******************************************************
' Enter時フォーカス遷移 / KeyDown
' ******************************************************
Private Sub TextBox1_KeyDown(ByVal sender As System.Object, _
  ByVal e As System.Windows.Forms.KeyEventArgs) _
  Handles TextBox1.KeyDown

  ' Enterの場合
  If e.KeyCode = Keys.Enter Then

    ' ビープ音を鳴らさないようにする
    e.SuppressKeyPress = True
    ' 次のTextBoxへフォーカスを当てる
    Me.TextBox2.Focus()

  End If

End Sub
「KeyDown」時に「どのキーが押されたか」をチェックします。 「Keys.Enter」で無くとも、Enterのキーコードである「13」でも可能です。 2つ目:「KeyPress」での取得・遷移。
' ******************************************************
' Enter時フォーカス遷移 / KeyPress
' ******************************************************
Private Sub TextBox2_KeyPress(ByVal sender As System.Object, _
  ByVal e As System.Windows.Forms.KeyPressEventArgs) _
  Handles TextBox2.KeyPress

  ' Enterの場合
  If e.KeyChar = Chr(Keys.Enter) Then

    ' ビープ音を鳴らさないようにする
    e.Handled = True
    ' 次のTextBoxへフォーカスを当てる
    Me.TextBox1.Focus()

  End If

End Sub
「KeyPress」時に「押されたキーはどれか」をチェックします。 「Chr(Keys.Enter)」は、 Chr関数によって「Keys.Enter」をそのまま「Enter」として返しています。

0 件のコメント:

コメントを投稿