获取KeyPress事件中的KeyCode值
如何解决此错误:
‘System.Windows.Forms.KeyPressEventArgs’不包含’KeyCode’的定义,也没有接受第一个类型为’System.Windows.Forms.KeyPressEventArgs’的扩展方法’KeyCode’(你是否缺少using指令)或汇编参考?)
码:
private void Form1_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyCode == Keys.Enter) { MessageBox.Show("Enter Key Pressed "); } }
我正在使用Visual Studio 2010,这个项目的框架4。
您无法从KeyPress
获取KeyCode
(至少不使用某些映射)事件,因为KeyPressEventArgs仅提供KeyChar属性。
但是你可以从KeyDown
事件中获取它。 System.Windows.Forms.KeyEventArgs
具有所需的KeyCode
属性:
private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { MessageBox.Show(e.KeyCode.ToString()); }
如果KeyDown事件不适合您,您仍然可以将KeyCode保存在某个私有字段中,稍后在KeyPress事件中使用它,因为在正常情况下,每个KeyPress都在KeyDown之前:
关键事件按以下顺序发生:
的KeyDown
按键
KEYUP
private Keys m_keyCode; private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { this.m_keyCode = e.KeyCode; } private void Form1_KeyPress(object sender, KeyPressEventArgs e) { if (this.m_keyCode == Keys.Enter) { MessageBox.Show("Enter Key Pressed "); } }