電子書籍の厳選無料作品が豊富!

お世話になります。

VC#2010にて、フォームにボタンを配置し、そのボタンに
フォーカスがあるときにEnterキーを押下すると、そのボタンが
押されたことになってしまいますが、これをさせない方法は
ありますでしょうか。

Enterキーは、フォーム側でKeyDown(KeyPress?)処理で
別に行いたいので、押下として反応してしまうと、KeyDownに
処理が飛ばなくなってしまいます。

それを回避する方法です。

何卒よろしくお願いいたします。

A 回答 (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の
動作で固定されてて、変更できないということなのでしょうか…。

補足日時:2014/06/27 10:35
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!