Enterキーを押した場合に次のコントロールにフォーカスを移動する方法について説明する。
この処理を行う場合には、以下を利用することになる。
 ・各コントロールのKeyDownイベント
 ・フォームのSelectNextControl()メソッド
  (フォームのProcessTabKey()メソッドでも可能)

以下、テキストボックスでEnterキーを押した場合のサンプル。
Public Class Form1
 Inherits System.Windows.Forms.Form
  :(中略)

 Private Sub TextBox1_KeyDown(ByVal sender As Object, _
  ByVal e As System.Windows.Forms.KeyEventArgs) _
  Handles TextBox1.KeyDown

  'Enterキーは、Tabキーと逆順にフォーカスを移動する
  'そのため、第2引数のForwordは、Trueにすると後方検索になる

  If e.KeyCode = Keys.Enter Then
   Me.SelectNextControl(Me.ActiveControl, True, _
   True, True, True)
  End If
 End Sub
End Class

上記のサンプルでは、全てのコントロールのKeyDownイベントに同じコードを記載しなければならない。
コントロール数が多くなると厳しいので、もっと簡単にする方法を説明する。
それには、以前の記事「キーを押した時にボタンのクリックイベントを発生させる」で説明したフォームのKeyDownイベントを利用すれば良い。
その場合には、以下を利用することになる。

 ・フォームのKeyDownイベント
 ・フォームのSelectNextControl()メソッド
  (フォームのProcessTabKey()メソッドでも可能)
 ・フォームのKeyPreviewプロパティをTrueに変更する

以下、サンプル。

Public Class Form1
 Inherits System.Windows.Forms.Form
  :(中略)

 Private Sub BaseForm_KeyDown(ByVal sender As Object, _
  ByVal e As System.Windows.Forms.KeyEventArgs) _
  Handles MyBase.KeyDown

  If e.KeyCode = Keys.Enter Then
   Dim blnNext As Boolean = False

   '複数行入力可能なコントロールは、フォーカスが移動しないように制御
   If TypeOf Me.ActiveControl Is TextBox Then
    If CType(Me.ActiveControl, TextBox).Multiline = True Then
     blnNext = True
    End If
   ElseIf TypeOf Me.ActiveControl Is RichTextBox Then
    blnNext = True
   End If

   '次のコントロールへフォーカスを移動する
   If blnNext = False Then
    Me.SelectNextControl(Me.ActiveControl, True, _
    True, True, True)
   End If
  End If
 End Sub
End Class

【補足事項】
・一部のコントロールでは、Enterキーを入力値として扱う。
 この場合には、フォーカスを移動しないように制御する必要がある。
・WindowsでEnterキーを押した場合の通常のフォーカス移動は、Tabキーを押した場合の逆順となる。
 ・Tabキーは、1つ後のコントロールにフォーカスを移す。
 ・Enterキーは、1つ前のコントロールにフォーカスを移す。
・要望が多いようであれば、ユーザ定義コントロールとして拡張フォームを用意すれば良い。