Program WinForm jest wybredny w kwestii wybranego skrótu klawiaturowego. Zasadą jest, że musi to być klawisz funkcyjny (F1-F12) lub inny klucz z dołączonym Keys.Control
lub Keys.Alt
. Większa intencja polega na tym, że nie można przypadkowo zastąpić zwykłego klucza, który może być użyty w, powiedzmy, TextBox
. Klawisz Escape normalnie obsługuje przycisk anulowania okna dialogowego.
Keys.Escape
jest raczej wyjątkowy; Alt + Escape i Ctrl + Escape nie działają, ponieważ są to globalne klawisze skrótów w systemie Windows.
Nie można użyć właściwości ShortcutKeys
; musisz inaczej rozpoznać klawisz Escape. Łatwo zrobić w klasie Form przez przesłonięcie metody ProcessCmdKey()
. Wklej ten kod do swojego formularza:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
if (keyData == Keys.Escape) {
this.Close();
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
Jaka jest sytuacja? Możesz być lepiej z "CancelButton". – Ryan