• ベストアンサー

KetPreview=Trueにもかかわらず

フォームのKeyPreviewをTrueにして、 KeyDownにKeyCode = 0と書けば他のキー操作は無効となる筈ですよね。 矢印キーを押すとある動作を行う、という風にしたいのですが、 記述した動作が行われない代わりに、通常のフォーカス移動がなされるだけなのです。 何故なのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

Keycodeだけでは、コマンドボタンなどの一部のコントロールのフォーカス順までは、制御できません。 完全に制御したいなら、グローバルフックを行い、勝手に行われる制御を殺す必要があります。 http://okweb.jp/kotaeru.php3?q=199683

参考URL:
http://okweb.jp/kotaeru.php3?q=199683
thrush76
質問者

お礼

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

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • takamoke
  • ベストアンサー率33% (30/89)
回答No.1

まず、どのキーを押すとフォーカス移動するかが 不明なのですが、 KeyDownにKeyCode = 0 なら 矢印キーも ゼロに成りませんか? Private Sub Text1_KeyDown If KeyCode = KEY_DOWN Or KeyCode = vbKeyReturn Then Text2.SetFocus End If

thrush76
質問者

補足

言葉足らずですみません。 Private Sub Form_KeyDown() If KeyCode = vbKeyLeft(Right,Up,Down) Then  (動作を指示) End If KeyCode = 0 End Sub といった記述です。 他のコントロールのKeyDownイベントは何も記述しておりません。

すると、全ての回答が全文表示されます。

関連するQ&A