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

フォームのKeyPreviewをTrueにして、
KeyDownにKeyCode = 0と書けば他のキー操作は無効となる筈ですよね。

矢印キーを押すとある動作を行う、という風にしたいのですが、
記述した動作が行われない代わりに、通常のフォーカス移動がなされるだけなのです。

何故なのでしょうか?

A 回答 (2件)

Keycodeだけでは、コマンドボタンなどの一部のコントロールのフォーカス順までは、制御できません。



完全に制御したいなら、グローバルフックを行い、勝手に行われる制御を殺す必要があります。

http://okweb.jp/kotaeru.php3?q=199683

参考URL:http://okweb.jp/kotaeru.php3?q=199683
    • good
    • 0
この回答へのお礼

ありがとうございます。
うまくいきました。
KeyCodeだけでは制御できないとは思いませんでした。

お礼日時:2005/07/14 19:23

まず、どのキーを押すとフォーカス移動するかが 不明なのですが、



KeyDownにKeyCode = 0 なら 矢印キーも ゼロに成りませんか?

Private Sub Text1_KeyDown
If KeyCode = KEY_DOWN Or KeyCode = vbKeyReturn Then
Text2.SetFocus
End If

この回答への補足

言葉足らずですみません。

Private Sub Form_KeyDown()
If KeyCode = vbKeyLeft(Right,Up,Down) Then
 (動作を指示)
End If
KeyCode = 0
End Sub

といった記述です。
他のコントロールのKeyDownイベントは何も記述しておりません。

補足日時:2005/07/13 19:06
    • good
    • 0

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