解決済み

SSTABでのKEYDOWNイベント

  • すぐに回答を!
  • 質問No.225585
  • 閲覧数1390
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 73% (46/63)

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

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

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

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

  • 回答No.2

ベストアンサー率 58% (728/1234)

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にすると何故うまくいくかというと、うーん分からん..
お礼コメント
u_kappa

お礼率 73% (46/63)

やっぱりバグなんですか。。。結構はまっていたので助かりました。
KeyCode=0ですが、KeyDownイベントのヘルプに以下のようにありました。
KeyCode=0とするとKeyイベントが無効となるようです。
以下引用のみ---------
キーボード イベントの処理をフォーム レベルだけで行い、
コントロールにキーボード イベントを送らないようにするには、
フォームの KeyPress イベントで引数 KeyAscii を 0 に設定し、
フォームの KeyDown イベントで引数 KeyCode を 0 に設定します。
投稿日時 - 2002-02-27 14:05:55
Be MORE 7・12 OK-チップでイイコトはじまる

その他の回答 (全1件)

  • 回答No.1

ベストアンサー率 58% (728/1234)

>FormのKEYDOWNイベントでPageUp・PageDownの押下の際に、
>SSTAB上のアクティブなTABをずらす処理

の後にKeyCode = 0
お礼コメント
u_kappa

お礼率 73% (46/63)

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

でも、なぜ2回イベントが発生してしまうのでしょうか?
ご存知でしたら教えてください。
投稿日時 - 2002-02-27 12:32:53
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ