質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

2232閲覧

VB Formアプリ FormをWscapeキーで終了したい

kuma1205

総合スコア9

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2020/06/11 08:06

VB Formアプリでの質問です。FormBorderStyleプロパティをNoneにし、Escapeキーを押してアプリ終了させたいのですが、うまく作動しません。アドバイスをお願いいたします。

Visual

1 Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown 2 '<判定>押されたキーがエスケープキー? 3 If (e.KeyCode = Keys.Escape) Then 4 '「Yes」の場合 5 'アプリケーションを終了 6 Me.Close() 7 End If 8 End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttyp03

2020/06/11 08:11

タイトルがWscapeになっているので修正お願いします。 「FormBorderStyleプロパティをNone」にする処理が入っていませんが、これがわからないこと?それとも質問とは関係ない処理? うまく作動しないとは?Me.Closeには到達しているのですか? 情報不足すぎです。 追加お願いします。
Daregada

2020/06/11 08:15

Form1フォームにコントロール(ボタンなど)を配置していませんか?
kuma1205

2020/06/12 04:37

Form1にTextBoxが配置しました。FormBorderSytleプロパティをNoneにしていたのですが、EscapeキーからMe.Closeが実行されませんでしたので、Sizableにしておりました。ご指摘ありがとうございました。リファレンス詳細サイト等はないでしょうか。
guest

回答1

0

ベストアンサー

※フォームがShowDialogで開いていないことを前提とします。
(この場合はCancelButtonプロパティの設定でエスケープキーでフォームを閉じることが可能。)

KeyDownイベントは、そのままではエスケープキーを捕捉できません。
PreviewKeyDownイベントではエスケープキーを捕捉できるのですが、フォーム上にコントロールがあると、フォームまでPreviewKeyDownイベントが発生しません。
この場合、フォームのKeyPreviewプロパティをTrueにすると、フォームのKeyDownイベントでEscapeキーを捕捉できるようになります。

ただし、キーによっては上記方法で捕捉できないものがあります。(矢印等)
そのようなキーを捕捉したい場合は、以下の記事を参考にして、フォームで対象キーを捕捉できるようになります。

(参考)Buttonコントロールにフォーカスがあるとフォームで矢印キーのキーイベントが発生しない

参考までに、これにエスケープキーを適用すると、以下のようになります。

VB

1 <System.Security.Permissions.UIPermission( _ 2 System.Security.Permissions.SecurityAction.Demand, _ 3 Window:=System.Security.Permissions.UIPermissionWindow.AllWindows)> _ 4 Protected Overrides Function ProcessDialogKey( _ 5 ByVal keyData As Keys) As Boolean 6 If (keyData And Keys.KeyCode) = Keys.Escape Then 7 Me.Close() 8 'Escapeキーの本来の処理をさせたくないときは、trueを返す 9 Return True 10 End If 11 12 Return MyBase.ProcessDialogKey(keyData) 13 End Function

投稿2020/06/11 08:36

編集2020/06/11 09:02
kenshirou

総合スコア772

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kuma1205

2020/06/12 04:51

@kenshirouさん、ありがとうございます。KeyPreviewプロパティをTrueにしましたら、Escapeで開くことができました。たすかりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問