エスケープでフォームをアンロードできる様にしたいのですが、ネットで調べて、
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyEscape Then 'ESCキー
Unload Me
End If
End Sub
VB6にて、こう記述するとあったのですが、同じ様に記述しても一向に
反応しません。どの様にしたらよいでしょうか
(また、プロパティーのトゥルー、フォールスで設定出来た記憶があったの
ですが、これは思い違いでしょうか)
よろしくお願いします。
Cancel プロパティを True にした CommandButton を置いて、
その Click イベントで Unload するとか。
KeyPress イベントは、文字入力として扱いたい場合のために
あるのであって、Keyboard のボタンが押されたことに反応したいの
あれば KeyDown,KeyUp イベントを使うべきでしょう。
また、フォーカスを持ち得るコントロールがある場合は、KeyPreview
プロパティを True にして置かないと Form の KeyPress イベントは
発生しないでしょうし。
ご回答有難う御座います。
KeyPreviewプロパティを True にして、キープレスイベントに記述した所、上手く出来たのですが、キーダウンイベントに記述した所反応しません。
何処がおかしいでしょうか
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyAscii = vbKeyEscape Then
Unload Me
End If
End Sub
よろしくお願いします。
> If KeyAscii = vbKeyEscape Then
If KeyCode = vbKeyEscape Then
でなく?
もっとも、Form 上にフォーカスを持ち得る他のコントロールを配置する
状況ならば、最初に提示した方法である Cancel プロパティを True にして、
状況に応じては TabStop プロパティを False にした CommandButton を
使う方が面倒は少ないと思いますよ。
K.J.K.様有難う御座いました。
If KeyCode = vbKeyEscape Then
でなく?
すいません直していませんでした。
今は、コマンドボタンの方でやろうと思っています。
ツイート | ![]() |