VB6・SP5で開発を行っています。
FormのKEYDOWNイベントでPageUp・PageDownの押下の際に、
SSTAB上のアクティブなTABをずらす処理を行おうとしています。

問題はSSTAB上にフォーカスが移った直後だけ、
KEYDOWNイベントが2回実行されてしまうというものです。
KEYUPについても同様でした。
このような現象をご存知の方、
対処方法をお教えくださる方がいらっしゃいましたらよろしくお願いします。

ちなみにモジュール変数等のフラグはなるべく使用したくありません。

A 回答 (2件)

SSTAB上にフォーカスがあるときにどんなキーでもForm_KeyDownイベントが2回発生します。


これはSSTABのバグだと思います。

Private Sub Form_Load()
Me.KeyPreview = True
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Static Cnt As Long
Debug.Print Cnt, KeyCode
Cnt = Cnt + 1
End Sub

で、KeyCode = 0にすると何故うまくいくかというと、うーん分からん..
    • good
    • 0
この回答へのお礼

やっぱりバグなんですか。。。結構はまっていたので助かりました。
KeyCode=0ですが、KeyDownイベントのヘルプに以下のようにありました。
KeyCode=0とするとKeyイベントが無効となるようです。
以下引用のみ---------
キーボード イベントの処理をフォーム レベルだけで行い、
コントロールにキーボード イベントを送らないようにするには、
フォームの KeyPress イベントで引数 KeyAscii を 0 に設定し、
フォームの KeyDown イベントで引数 KeyCode を 0 に設定します。

お礼日時:2002/02/27 14:05

>FormのKEYDOWNイベントでPageUp・PageDownの押下の際に、


>SSTAB上のアクティブなTABをずらす処理

の後にKeyCode = 0
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
お教えいただいた方法でうまくいきました。

でも、なぜ2回イベントが発生してしまうのでしょうか?
ご存知でしたら教えてください。

お礼日時:2002/02/27 12:32

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


人気Q&Aランキング