Winformsは、選択したショートカットキーストロークについて不安です。ファンクションキー(F1〜F12)またはKeys.Control
またはKeys.Alt
のいずれかを含む別のキーでなければならないというルールです。ここでのより大きな意図は、たとえばTextBox
などで使用される可能性のある通常のキーを誤って置き換えることができないことです。エスケープキーは通常、ダイアログのキャンセルボタンを操作します。
Keys.Escape
はかなり特殊です。 WindowsのグローバルショートカットキーであるAlt + EscapeとCtrl + Escapeは機能しません。
したがって、ShortcutKeys
プロパティは使用できません。 Escキーを異なる方法で認識する必要があります。 ProcessCmdKey()
メソッドをオーバーライドすることで、簡単にフォームクラスで行うことができます。このコードをフォームに貼り付けてください:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
if (keyData == Keys.Escape) {
this.Close();
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
状況はどうですか? 'CancelButton'を使う方が良いかもしれません。 – Ryan