在KeyPress事件中获取KeyCode值

问题描述 投票:0回答:2

如何解决这个错误。

'System.Windows.Forms.KeyPressEventArgs'不包含'KeyCode'的定义,也没有找到接受第一个参数类型为'System.Windows.Forms.KeyPressEventArgs'的扩展方法'KeyCode'(你是否缺少一个使用指令或汇编引用?

编码。

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
     if (e.KeyCode == Keys.Enter)
     {
         MessageBox.Show("Enter Key Pressed ");
     }
}

我使用Visual studio 2010, framework 4做这个项目。

c# winforms keypress
2个回答
4
投票

你不能得到 KeyCodeKeyPress(至少不用使用一些映射)事件,因为 按键事件参数(KeyPressEventArgs 只提供 键盘字符 属性。

但你可以从 KeyDown 事件. System.Windows.Forms.KeyEventArgs 具备所需的 KeyCode 属性。

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

如果KeyDown事件不适合你,你仍然可以将KeyCode保存在某个私人领域,并在以后的KeyPress事件中使用它,因为在正常情况下,每个KeyPress之前都有KeyDown。

按键事件的发生顺序如下:

  • 按键事件发生的顺序如下: KeyDown

  • 按键

  • 键入

private Keys m_keyCode;

private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
    this.m_keyCode = e.KeyCode;
}

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
     if (this.m_keyCode == Keys.Enter)
     {
         MessageBox.Show("Enter Key Pressed ");
     }
}

0
投票

试试这个

    private void game_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == (char)Keys.Enter)
            MessageBox.Show(Keys.Enter.ToString(), "information", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
© www.soinside.com 2019 - 2024. All rights reserved.