Enterキーでフォーカス遷移

汎用機からのリプレースなど業務系にシステムで見られる要望に、Enterキーでのフォーカス移動 の話が出てきます。(本来はTabでしょって言われますけど…)

Enterキーでフォーカスを移動する派生クラスを作成しておくと便利そうですね。

まず、フォームが先にキーイベントを受取るようKeyPreviewプロパティをTrueにします。

Protected Overridable Sub B3APP_Form_KeyDown(ByVal sender As Object, _
                            ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown

    If e.KeyCode = Keys.Enter Then
        If e.Control = False Then
            '次のTabIndexのコントロールへフォーカスを遷移する
            '[Shift+TAB],[Shift+Enter]の場合はフォーカスを反対に遷移する
            Me.SelectNextControl(Me.ActiveControl, Not e.Shift, True, True, True)
        End If
    End If

End Sub

Protected Sub B3APP_Form_KeyPress(ByVal sender As Object, _
                ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress

    If e.KeyChar = ControlChars.Cr Then
        'e.Handled = True    'フォーカス遷移後にビープ音が鳴らないようにする。
    End If

End Sub

上記のようなフォームをベースに派生してアプリケーションを作ると楽ができそうです。