在WinForm中经常会需要实现这样的功能:按ESC关闭当前窗口,或者按不同的键,实现不同的功能。
下文以实现按ESC关闭当前窗口为例:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { /* C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinUser.h中定义: #define WM_KEYFIRST 0x0100 #define WM_KEYDOWN 0x0100 #define WM_KEYUP 0x0101 #define WM_CHAR 0x0102 #define WM_DEADCHAR 0x0103 #define WM_SYSKEYDOWN 0x0104 #define WM_SYSKEYUP 0x0105 #define WM_SYSCHAR 0x0106 #define WM_SYSDEADCHAR 0x0107 */ if (msg.Msg == 0x100 || msg.Msg == 0x104) // WM_KEYDOWN, WM_SYSKEYDOWN { if(keyData == Keys.Escape) { this.Close(); // Esc关闭窗体 } } return false; }