DataGridView(TextBox 列)で[Enter]を押すとフォーカスは下に移動します。
[Enter]キーでフォーカスを右(または左)に移動させたいこともあります。
[Enter]押下で、[Tab]キーとか[→]キーと同じように、
フォーカスを横に移動させる簡単な方法をご紹介します。
DataGridView での KeyDown イベントを使いました。
実際に押された[Enter]キーは無効にして
[Tab]キーが押されたことにする、だけで出来ました。
サンプル・コードは以下のとおりです。
(サンプルでは表示上の問題から、半角ではなく全角スペースでインデントしています。
全角スペースは半角スペースに置き換えてください)
【サンプル・コード】
' --- DataGridView1 での KeyDown イベントハンドラ:[Enter]キーで[Tab]キー同様の動きをさせる
Private Sub DataGridView1_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles DataGridView1.KeyDown
If e.KeyCode = Keys.Enter Then ' --- [Enter]が押されたら
e.Handled = True ' --- 実際に押された[Enter]は無効にして
SendKeys.Send("{TAB}") ' --- [Tab] が押されたことにする
End If
End Sub
なお、[Shift]を押しながら[Enter]すると、ちゃんと左に移動してくれました。
Web にはコード量の多い方法が幾つか紹介されていましたが、
私の環境ではこれが一番簡単にできました。
参考になれば幸いです。
ここをクリックして、北窓舎のサイトにもお立ち寄りください・・・
【追記】
入力中でないセルのフォーカス移動については上記でよさそうですが、
入力し、確定して[Enter]すると下にフォーカス移動しました。
これをカバーする方法を思いついたら、報告します。
[Enter]キーでフォーカスを右(または左)に移動させたいこともあります。
[Enter]押下で、[Tab]キーとか[→]キーと同じように、
フォーカスを横に移動させる簡単な方法をご紹介します。
DataGridView での KeyDown イベントを使いました。
実際に押された[Enter]キーは無効にして
[Tab]キーが押されたことにする、だけで出来ました。
サンプル・コードは以下のとおりです。
(サンプルでは表示上の問題から、半角ではなく全角スペースでインデントしています。
全角スペースは半角スペースに置き換えてください)
【サンプル・コード】
' --- DataGridView1 での KeyDown イベントハンドラ:[Enter]キーで[Tab]キー同様の動きをさせる
Private Sub DataGridView1_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles DataGridView1.KeyDown
If e.KeyCode = Keys.Enter Then ' --- [Enter]が押されたら
e.Handled = True ' --- 実際に押された[Enter]は無効にして
SendKeys.Send("{TAB}") ' --- [Tab] が押されたことにする
End If
End Sub
なお、[Shift]を押しながら[Enter]すると、ちゃんと左に移動してくれました。
Web にはコード量の多い方法が幾つか紹介されていましたが、
私の環境ではこれが一番簡単にできました。
参考になれば幸いです。
ここをクリックして、北窓舎のサイトにもお立ち寄りください・・・
【追記】
入力中でないセルのフォーカス移動については上記でよさそうですが、
入力し、確定して[Enter]すると下にフォーカス移動しました。
これをカバーする方法を思いついたら、報告します。