KeyPressイベントについて – プログラミング – Home

KeyPressイベントについて
 
通知
すべてクリア

[解決済] KeyPressイベントについて


たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
Topic starter  

久しぶりに質問させていただきます、たいちうです。

テキストボックスのKeyPressイベントなんですが、下記のコードで実験すると、
デバッグ時にはKeyDownイベントのみが、
実行ファイルからは、KeyPress->KeyDownの順でイベントが発生しました。

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
MsgBox KeyDown
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
MsgBox KeyPress
End Sub

環境:WinNT4 + VB6.0SP5

1.デバッグ時と実行ファイルからとで、呼ばれるイベントが異なるというのは、
  VBのバグなのでしょうか?
2.MSDNには、KeyPressイベントの発生は
  「ユーザーが、ANSI 文字キーを押して離したときに発生します。」とあるので、
  実行時の発生順序も逆ではないでしょうか?
3.KeyDownとKeyPressの両方を同時に使うのが良くないのでしょうか?

以上、宜しくおねがいします。

# 去年の8月頃に質問した「タブキーでフォーカスを移したくない」という質問ですが、
# 長らくほっといたのですが、解決しています。有り難うございました。
# 過去ログへの書き込みができなくなっているのですが、わざわざスレを立てるほどの
# 内容でもないと思い、ほっておいているのですが、リクエストがあるようでしたら、
# 新スレッドで報告させていただきます。 


引用未解決
トピックタグ
GOD
 GOD
(@GOD)
ゲスト
結合: 22年前
投稿: 6
 

私の環境(Win2K+SP2, VB6+SP5)では正しく動いてましたよ。(KeyDown->KeyPress)
下のコードで確認しました。MsgBoxはボタンが押下されるまで処理が止まってしまうの
で使ってません。

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Text2 = Text2 & KeyDown & vbCrLf
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
Text2 = Text2 & KeyPress & vbCrLf
End Sub


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
Topic starter  

GODさま 早速の回答有り難うございます。

デバッグでも実行ファイルでも、Text2は正しく表示できました。
どうやら、先に呼ばれるKeyDownにMsgBoxを書くと、処理が変わってくるようです。

デバッグ時には、KeyDownから呼ばれたMsgBoxで処理が止まり、KeyPressイベントが
発生しない。
実行ファイルからでは、KeyDownがOSにMessageBoxの表示を依頼し、
続けてKeyPressもMessageBoxの表示を依頼。
OSがMessageBoxを表示する時に、なぜか順番が逆になっているのでしょう。

...このように想像しています。
もっと良い説明、証明、反証がありましたら、お教え下さい。


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
Topic starter  

追加情報がなさそうですので、解決とさせていただきます。
有り難うございました。

# 実用上はもう問題ないと思うんですが、ちょっと納得できてないんですけどね。
# VBのバグですよね?


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました