キャンセルでアンロードするには

解決


とく  2010-06-06 20:01:07  No: 102418

エスケープでフォームをアンロードできる様にしたいのですが、ネットで調べて、
Private Sub Form_KeyPress(KeyAscii As Integer)
    If KeyAscii = vbKeyEscape Then      'ESCキー
        Unload Me
    End If
End Sub

VB6にて、こう記述するとあったのですが、同じ様に記述しても一向に
反応しません。どの様にしたらよいでしょうか
(また、プロパティーのトゥルー、フォールスで設定出来た記憶があったの
ですが、これは思い違いでしょうか)

よろしくお願いします。


K.J.K.  2010-06-06 20:19:48  No: 102419

Cancel プロパティを True にした CommandButton を置いて、
その Click イベントで Unload するとか。

KeyPress イベントは、文字入力として扱いたい場合のために
あるのであって、Keyboard のボタンが押されたことに反応したいの
あれば KeyDown,KeyUp イベントを使うべきでしょう。

また、フォーカスを持ち得るコントロールがある場合は、KeyPreview
プロパティを True にして置かないと Form の KeyPress イベントは
発生しないでしょうし。


とく  2010-06-07 04:03:06  No: 102420

ご回答有難う御座います。
KeyPreviewプロパティを True にして、キープレスイベントに記述した所、上手く出来たのですが、キーダウンイベントに記述した所反応しません。
何処がおかしいでしょうか
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyAscii = vbKeyEscape Then
        Unload Me
    End If
End Sub
よろしくお願いします。


K.J.K.  2010-06-07 05:20:02  No: 102421

> If KeyAscii = vbKeyEscape Then
If KeyCode = vbKeyEscape Then
でなく?

もっとも、Form 上にフォーカスを持ち得る他のコントロールを配置する
状況ならば、最初に提示した方法である Cancel プロパティを True にして、
状況に応じては  TabStop プロパティを False にした CommandButton を
使う方が面倒は少ないと思いますよ。


とく  2010-06-07 19:56:27  No: 102422

K.J.K.様有難う御座いました。
If KeyCode = vbKeyEscape Then
でなく?
すいません直していませんでした。

今は、コマンドボタンの方でやろうと思っています。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加