フォームに複数のコントロール(入力フィールド)が存在するばあい、次のコントロールにフォーカスを移動する時、通常では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キーでは隣のセルにフォーカスが...
コメント