为什么我的KeyPressEvent无法使用Right / Left / Up / Down?

时间:2013-11-06 22:45:47

标签: c# keypress

在C#中,我试图查看用户是否按下右键以便玩家向右移动,但是当我尝试它时,它没有注册按键:

private void KeyPressed(object sender, KeyPressEventArgs e)
{
      if(e.KeyChar == Convert.ToChar(Keys.Right))
      {
              MessageBox.Show("Right Key");
      } 
} 

它不显示MessageBox

这对左/上/下都不起作用

但是,如果我用

替换它
if(e.KeyChar == Convert.ToChar(Keys.Space))

有效。

我做错了吗?

2 个答案:

答案 0 :(得分:4)

您应该使用KeyDown事件,例如对于箭头:

private void KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Down || e.KeyCode == Keys.Up || e.KeyCode == Keys.Left || e.KeyCode == Keys.Right)
    {
    }
}

箭头键不是字符,因此不会使用KeyPressed

答案 1 :(得分:2)

箭头键位于keyUp事件中:

Keys.Up,Keys.Down,Keys.Left,Keys.right

它们不是由KeyPressEventArgs触发的。