2009年10月29日木曜日

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

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

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

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

1つ目:「KeyDown」での取得・遷移。
01.' ******************************************************
02.' Enter時フォーカス遷移 / KeyDown
03.' ******************************************************
04.Private Sub TextBox1_KeyDown(ByVal sender As System.Object, _
05.  ByVal e As System.Windows.Forms.KeyEventArgs) _
06.  Handles TextBox1.KeyDown
07. 
08.  ' Enterの場合
09.  If e.KeyCode = Keys.Enter Then
10. 
11.    ' ビープ音を鳴らさないようにする
12.    e.SuppressKeyPress = True
13.    ' 次のTextBoxへフォーカスを当てる
14.    Me.TextBox2.Focus()
15. 
16.  End If
17. 
18.End Sub
「KeyDown」時に「どのキーが押されたか」をチェックします。 「Keys.Enter」で無くとも、Enterのキーコードである「13」でも可能です。 2つ目:「KeyPress」での取得・遷移。
01.' ******************************************************
02.' Enter時フォーカス遷移 / KeyPress
03.' ******************************************************
04.Private Sub TextBox2_KeyPress(ByVal sender As System.Object, _
05.  ByVal e As System.Windows.Forms.KeyPressEventArgs) _
06.  Handles TextBox2.KeyPress
07. 
08.  ' Enterの場合
09.  If e.KeyChar = Chr(Keys.Enter) Then
10. 
11.    ' ビープ音を鳴らさないようにする
12.    e.Handled = True
13.    ' 次のTextBoxへフォーカスを当てる
14.    Me.TextBox1.Focus()
15. 
16.  End If
17. 
18.End Sub
「KeyPress」時に「押されたキーはどれか」をチェックします。 「Chr(Keys.Enter)」は、 Chr関数によって「Keys.Enter」をそのまま「Enter」として返しています。

0 件のコメント:

コメントを投稿