我是编码方面的新手,如果不合适的话,对不起。我在C#中尝试识别是否按住了Space键。我在网上找到了此代码,但无法正常工作。
if (e.Key == Key.Space)
{
}
我得到的错误是:
'EventArgs'不包含'Key'的定义,也没有扩展名 接受类型为'EventArgs'的第一个参数的方法'Key'可以是 找到(您是否缺少using指令或程序集引用?)
任何帮助将不胜感激。
答案 0 :(得分:5)
KeyEventArgs
包含e.Key
。
将EventHandler
更改为KeyEventHandler
,并使用KeyEventArgs
代替EventArgs
示例代码:
public void EventAdder() {
Child.KeyDown += new KeyEventHandler( OnKeyDown );
}
private void OnKeyDown( object sender, KeyEventArgs e )
{
switch( e.KeyCode )
{
case Keys.Escape:
Btn_Cancel_Click( sender, e );
break;
case Keys.Enter:
Btn_Commit_Click( sender, e );
break;
}
}
答案 1 :(得分:1)
在什么物体上?您必须在对象上分配事件。例如,如果您使用的是文本框,请转到属性,然后在关键部分分配诸如Keydown
之类的事件。 (即Textbox1_KeyDown)双击以查看代码,然后插入您的按键事件参数。
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Space)
{
MessageBox.Show("Space pressed");
}
}
您也可以使用KeyCode e.KeyCode == Key.Space
答案 2 :(得分:0)
EventArgs是事件的基类,您必须将其强制转换为特定类型。在这种情况下,KeyEventArgs。您会在其他许多情况下注意到这一点。