C#を始めよう|フォームでEnterキーをTabキーと同様に動作させる

C#を始めよう|フォームでEnterキーをTabキーと同様に動作させる

C#

フォームに複数のコントロール(入力フィールド)が存在するばあい、次のコントロールにフォーカスを移動する時、通常ではTabキーで移動します。

しかし、心情的にEnterキーを押したくなりませんか?。
Tabキーでの移動は何気に不便と思います。

なので、Enterキーを押したらTabキーを押したときと同様に動作するようにしました。

ProcessDialogKeyメソッドをオーバーライド

CtrlキーかAltキーが押されている時は本来の動作をさせてるので、複数行のTextBoxで改行したい場合は、Ctrlキーを押しながらEnterキーを押すことで従来の動作をします。

protected override bool ProcessDialogKey(Keys keyData)
{
    //Returnキーが押されているか調べる
    //AltかCtrlキーが押されている時は、本来の動作をさせる
    if (((keyData & Keys.KeyCode) == Keys.Return) &&
        ((keyData & (Keys.Alt | Keys.Control)) == Keys.None))
    {
        //Tabキーを押した時と同じ動作をさせる
        //Shiftキーが押されている時は、逆順にする
        this.ProcessTabKey((keyData & Keys.Shift) != Keys.Shift);
        //本来の処理はさせない
        return true;
    }
    return base.ProcessDialogKey(keyData);
}

このコードをフォームのクラスの中に書けば実現できます。

たったこれだけで快適にフォームエントリーが可能になります。

DataGridView

この方法ではDetaGridViewは通常通り次のコントールにフォーカスを移すのはTabキーとなります。

⇩DataGridViewの対策はこちらを参照して下さい。

C#を始めよう|DataGridViewでEnterキーをTabキーと同様に動作させる
以前にFormを使ったプログラムでEnterキーを押したらまるでTabを押したかのように動作する対策をしましが、落とし穴がありました。 DataGridViewでは機能しないのです。 Enterキーでは隣のセルにフォーカスが...

コメント

タイトルとURLをコピーしました