- 締切済み
C# Enterキーの動作について
お世話になります。 VC#2010にて、フォームにボタンを配置し、そのボタンに フォーカスがあるときにEnterキーを押下すると、そのボタンが 押されたことになってしまいますが、これをさせない方法は ありますでしょうか。 Enterキーは、フォーム側でKeyDown(KeyPress?)処理で 別に行いたいので、押下として反応してしまうと、KeyDownに 処理が飛ばなくなってしまいます。 それを回避する方法です。 何卒よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Hayashi_Trek
- ベストアンサー率44% (366/818)
回答No.1
フォームのKeyPreviewプロパティで対応できるのでは? KeyPressなどのキーイベントをすべてフォームが受け取るようにする http://dobon.net/vb/dotnet/form/keypreview.html さらに、キーがEnterだったら、処理をフォームのイベントで終わらせることも出来る Form1_KeyDown()の中で If e.KeyCode <> Keys.Enter Then e.Handled = True End If とすれば、コントロール側にEnterキーのイベントが飛ばない。
補足
回答、ありがとうございます。 ご指摘のように、keypreviewもkeydownも修正していますが、 どうも『Enterキーでフォーカスのあるボタンをクリック』という 動きは、keydownとは別に処理されているようで、どうしても 実現できません。 強制的に、TextBoxなどの違うコントロールにFocusを 移せば、ひとまずは回避できますが、どうしても『ボタンが フォーカスの状態にあった時に』という条件が満たせません。 結局のところ、フォーカス状態でのEnterキーは、Windowskの 動作で固定されてて、変更できないということなのでしょうか…。