【C#】Enterキー、上下矢印キーの押下でフォーム上にあるコントロールのフォーカスを移動する(WinForms)

各コントロールのKwyDownイベントで行うと、
コントロールを追加するたびにイベントへの記述を追加しなければならなくなります。

そこで、FormのKeyDownイベントに実装します。

フォーム上のコントロールで起こったKeyDownイベントを
フォーム側でも受け取れるようにするため、
下記のプロパティを設定しておきます。

Form1.KeyPreview = true;

FormのKeyDownイベントを実装します。

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    try
    {
        switch (e.KeyCode)
        {
            case Keys.Return:
                //次のコントロールにフォーカス移動
                this.SelectNextControl(this.ActiveControl
                    , true, true, true, true);
                break;

            case Keys.Down:
            case Keys.Up:
                //リストボックスの上下キーは選択リストの移動なのでフォーカス移動させない
                if (this.ActiveControl is ListBox)
                {
                    break;
                }
                //リストボックスの上下キーは選択リストの移動なのでフォーカス移動させない
                if (this.ActiveControl is ComboBox)
                {
                    break;
                }
                //次のコントロールにフォーカス移動
                this.SelectNextControl(this.ActiveControl
                    ,e.KeyCode == Keys.Down, true, true, true);
                break;
        }
    }
    catch (Exception ex)
    {
        Console.Error.WriteLine(ex);
    }
}