エスケープキーを押したときにフォームを閉じるようにするには?
2023-08-06 05:16:01
質問
Windows Formsアプリケーションでボタンを押すと表示される小さなフォームがあります。
エスケープキーを押してフォームを閉じることができるようにしたいです。どうすればよいでしょうか。使用するイベントがわかりません。form_closing?
どのように解決するのですか?
フォーム上に、すでにフォームを閉じるボタンがある場合は、フォームのプロパティを設定して、これを実行することができます。
を設定します。
CancelButton
のプロパティをそのボタンに設定します。
が押されたときにクリックされるボタンコントロールを取得または設定します。 Esc キーを押したときにクリックされるボタンコントロールを取得または設定します。
もし、キャンセルボタンがないのであれば、そのボタンに
KeyDown
ハンドラを追加し、その中で Esc キーをチェックする必要があります。
private void Form_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
this.Close();
}
}
また
KeyPreview
プロパティを true に設定する必要があります。
フォーカスを持つコントロールにイベントが渡される前に、フォームがキーイベントを受信するかどうかを示す値を取得または設定します。
しかし、Gargoが指摘しているように、彼の
回答
を押すと
Esc
を押すと、ダイアログ内のコントロールの編集が中断され、ダイアログが閉じられるということになります。これを避けるために
ProcessDialogKey
メソッドを次のようにオーバーライドします。
protected override bool ProcessDialogKey(Keys keyData)
{
if (Form.ModifierKeys == Keys.None && keyData == Keys.Escape)
{
this.Close();
return true;
}
return base.ProcessDialogKey(keyData);
}
関連
-
[解決済み】コレクションが変更され、列挙操作が実行されないことがある。
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] 特定のプロパティに対するLINQのDistinct()
-
[解決済み] 数字しか入力できないテキストボックスの作り方を教えてください。
-
[解決済み] Windowsフォームアプリケーションで、アプリケーションの設定を保存するにはどうすればよいですか?
-
[解決済み】C#で文字列をenumに変換する
-
[解決済み】Windows Formsアプリケーションにキーボードショートカットを実装する最良の方法とは?
-
[解決済み】C#アプリケーションを適切に終了させる方法は?
-
[解決済み] Enterキーを押したときに「チーン」と鳴らないようにする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】WebForms UnobtrusiveValidationModeは、jqueryのScriptResourceMappingを必要とする
-
[解決済み】統合マネージドパイプラインモードで適用されないASP.NETの設定が検出された
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み】Swashbuckle/Swagger + ASP.Net Core: "Failed to load API definition" (API定義の読み込みに失敗しました
-
[解決済み】別のスレッドがこのオブジェクトを所有しているため、呼び出し側のスレッドはこのオブジェクトにアクセスできない
-
[解決済み】名前 'ViewBag' が現在のコンテキストに存在しない - Visual Studio 2015
-
[解決済み】Nullableオブジェクトは値を持たなければならない?
-
[解決済み] Windowsフォームを閉じるためのEscapeボタン in C#