C# 获取KeyPress事件中的KeyCode值
如何修复此错误: “System.Windows.Forms.KeyPressEventArgs”不包含定义 对于“KeyCode”和无扩展方法“KeyCode”接受第一个 类型为“System.Windows.Forms.KeyPressEventArgs”的参数可能为 找到(是否缺少using指令或程序集引用?) 代码: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,因为只提供
我正在使用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不显示