【问题标题】:Why does my KeyPressEvent not work with Right/Left/Up/Down?为什么我的 KeyPressEvent 不适用于 Right/Left/Up/Down?
【发布时间】:2013-11-06 22:45:46
【问题描述】:

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

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

不显示消息框

这也不适用于左/上/下

但是,如果我将其替换为

if(e.KeyChar == Convert.ToChar(Keys.Space))

有效。

我做错了吗?

【问题讨论】:

  • 这可能是因为Right 不是字符。我相信您正在寻找与命令键有关的东西。
  • 我会附加一个调试器并查看 a) 事件是否被触发? b)e.KeyChar 的值是多少,c)Keys.Right 的值是多少。

标签: c# keypress


【解决方案1】:

您应该使用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 不用于它们。

【讨论】:

    【解决方案2】:

    箭头键在 keyUp 事件中它们是:

    Keys.Up、Keys.Down、Keys.Left、Keys.right

    它们不是由 KeyPressEventArgs 触发的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-20
      • 1970-01-01
      • 1970-01-01
      • 2011-04-02
      • 2019-09-29
      • 2019-12-19
      • 1970-01-01
      • 2017-11-24
      相关资源
      最近更新 更多