C# 获取KeyPress事件中的KeyCode值

C# 获取KeyPress事件中的KeyCode值,c#,winforms,keypress,C#,Winforms,Keypress,如何修复此错误: “System.Windows.Forms.KeyPressEventArgs”不包含定义 对于“KeyCode”和无扩展方法“KeyCode”接受第一个 类型为“System.Windows.Forms.KeyPressEventArgs”的参数可能为 找到(是否缺少using指令或程序集引用?) 代码: 我正在使用Visual studio 2010 framework 4进行此项目。您无法从KeyPress事件(至少在不使用某些映射的情况下)获取KeyCode,因为只提供

如何修复此错误:

“System.Windows.Forms.KeyPressEventArgs”不包含定义 对于“KeyCode”和无扩展方法“KeyCode”接受第一个 类型为“System.Windows.Forms.KeyPressEventArgs”的参数可能为 找到(是否缺少using指令或程序集引用?)

代码:


我正在使用Visual studio 2010 framework 4进行此项目。

您无法从
KeyPress
事件(至少在不使用某些映射的情况下)获取
KeyCode
,因为只提供属性

但你可以从网上买到
System.Windows.Forms.KeyEventArgs
具有所需的
KeyCode
属性:

    private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
    {
       MessageBox.Show(e.KeyCode.ToString());
    }

如果KeyDown事件不适合您,您仍然可以将KeyCode保存在某个私有字段中,并在以后的KeyPress事件中使用它,因为在正常情况下,每个按键之前都有KeyDown:

关键事件按以下顺序发生:

  • 键控

  • 按键

  • 钥匙


您无法从
KeyPress
(至少在不使用某些映射的情况下)事件中获取
KeyCode
,因为只提供属性

但你可以从网上买到
System.Windows.Forms.KeyEventArgs
具有所需的
KeyCode
属性:

    private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
    {
       MessageBox.Show(e.KeyCode.ToString());
    }

如果KeyDown事件不适合您,您仍然可以将KeyCode保存在某个私有字段中,并在以后的KeyPress事件中使用它,因为在正常情况下,每个按键之前都有KeyDown:

关键事件按以下顺序发生:

  • 键控

  • 按键

  • 钥匙

试试这个

    private void game_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == (char)Keys.Enter)
            MessageBox.Show(Keys.Enter.ToString(), "information", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
试试这个

    private void game_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == (char)Keys.Enter)
            MessageBox.Show(Keys.Enter.ToString(), "information", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }

给你:给你:另一个错误:
没有重载“Form1\u KeyPress”匹配委托“System.Windows.Forms.KeyPress EventHandler”
@Smygolas你必须删除旧的处理程序
Form1\u KeyPress
(手动或从编辑器中的表单属性中删除)然后为
Form1\u KeyDown添加一个新的处理程序另一个错误:
找不到类型或命名空间名称“KeyCode”(您是否缺少using指令或程序集引用?
@Smygolas抱歉,它实际上是
Keys
)。在您的场景中,您可能只能使用
KeyDown
事件,而不使用private字段。它不起作用,我按enter键,但messagebox不显示另一个错误:
没有重载“Form1\u KeyPress”匹配委托“System.Windows.Forms.KeyPress EventHandler”
@Smygolas您必须删除旧的处理程序
Form1\u KeyPress
(手动或从编辑器中的表单属性中删除)然后为
Form1\u KeyDown添加一个新的处理程序另一个错误:
找不到类型或命名空间名称“KeyCode”(您是否缺少using指令或程序集引用?
@Smygolas抱歉,它实际上是
Keys
)。在您的场景中,您可能只能使用
KeyDown
事件,而不使用private字段。它不起作用,我按enter键,但messagebox不显示