玄関へお回り下さい。
Enter キーによるフォーカス移動の改良版 (2個)              (SNo.043)

1.SendKeys.Send メソッド を使った方法(Shift + Enter で逆方向に移動)
2.Control.SelectNextControl メソッド を使った方法(Shift + Enter で逆方向に移動)
使用コントロール TextBox を数個
その他条件 WindowsXP(Vista) Visual Basic 2005(VB2008)
  
1.SendKeys.Send メソッド を使った方法(Shift + Enter で逆方向に移動)
 
Private Sub Form1_Load(ByVal sender As System.Object, _
                       ByVal e As System.EventArgs) Handles MyBase.Load
    '別途 Form1のプロパティで設定してもOKです。
    Me.KeyPreview = True
End Sub

Private Sub Form1_KeyPress(ByVal sender As ObjectByVal e As _
                System.Windows.Forms.KeyPressEventArgs) 
Handles MyBase.KeyPress
'SendKeys.Send メソッド を使った方法(Shift + Enter で逆方向に移動)
    'Enterキーが押された事を取得
   
If e.KeyChar = Chr(Keys.Enter) Then
        e.Handled = 
True    'KeyPress イベントをキャンセルしBeep音を消音に
        SendKeys.Send(Constants.vbTab)
   
End If
End Sub

2.Control.SelectNextControl メソッド を使った方法(Shift + Enter で逆方向に移動)

Private Sub Form1_Load(ByVal sender As System.Object, _
                       ByVal e As System.EventArgs) Handles MyBase.Load
    '別途 Form1のプロパティで設定してもOKです。
    Me.KeyPreview = True
End Sub

Private Sub Form1_KeyPress(ByVal sender As ObjectByVal e As _
                System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
    'Enterキーが押された事を取得
    If e.KeyChar = Chr(Keys.Enter) Then
        e.Handled = True    'KeyPress イベントをキャンセルしBeep音を消音に
    End If
End Sub

Private Sub Form1_KeyDown(ByVal sender As ObjectByVal e As _
                System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
'Control.SelectNextControl メソッド を使った方法(Shift + Enter で逆方向に移動)
    If e.KeyCode = Keys.Enter Then
        If e.Control = False Then
            Me.SelectNextControl(Me.ActiveControl, Not e.Shift, TrueTrueTrue)
        End If
    End If
End Sub

Form1_KeyPress イベント1箇所で処理する事によって、個々のコントロールでの処理が不要となり、多くのコントロールに設定する場合に便利かと思います。
その他、上記同様にアクティブコントロールを利用した方法や Win32 API 関数を使った方法があります。

又、下記サンプル投稿用掲示板の方にも最新版を投稿しております。
 http://hanatyan.sakura.ne.jp/patio/read.cgi?mode=view2&f=334&no=18




2004/08/22
2005/09/20
2013/02/17

VBレスキュー(花ちゃん)
VB.NET2003  VB2005