Smy*_*las 0 c# keypress winforms
如何修复此错误:
“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 ");
}
}
Run Code Online (Sandbox Code Playgroud)
我正在为这个项目使用 Visual Studio 2010,框架 4。
您无法KeyCode从KeyPress(至少不使用某些映射)事件中获取,因为KeyPressEventArgs仅提供KeyChar属性。
但是你可以从KeyDown事件中得到它。System.Windows.Forms.KeyEventArgs具有所需的KeyCode属性:
private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
MessageBox.Show(e.KeyCode.ToString());
}
Run Code Online (Sandbox Code Playgroud)
如果 KeyDown 事件不适合您,您仍然可以将 KeyCode 保存在某个私有字段中,然后在 KeyPress 事件中使用它,因为在正常情况下,每个 KeyPress 之前都有 KeyDown:
关键事件按以下顺序发生:
按键按下
按键
键升
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 ");
}
}
Run Code Online (Sandbox Code Playgroud)