C#KeyEvent不记录enter / return键

时间:2010-03-20 16:35:03

标签: c# events keyboard-events keyevent

我一直在C#中创建此登录表单,我想在用户点击提交或按回车键/返回键后立即“提交”所有数据。

我一直在使用KeyEvents测试一下,但迄今为止没有任何工作。

void tbPassword_KeyPress(object sender, KeyPressEventArgs e)
{
    MessageBox.Show(e.KeyChar.ToString());
}

以上代码用于测试事件是否在第一时间起作用。 它工作得很好,当我按'd'时它会显示'd'当我按'8'时它会显示'8'但按下输入不会做任何事情。

所以我虽然这是因为输入并没有真正绑定到一个角色,但它确实显示了退格,它工作得很好,所以让我很困惑为什么它没有注册我的回车键。

所以问题是: 如何记录输入/返回键?为什么它不能正确记录按键现在就像它应该的那样?

注意:我已将事件放在文本框中

tbPassword.KeyPress += new KeyPressEventHandler(tbPassword_KeyPress);

因此当按下输入按钮时它会激活当选择文本框时(这当然是整个时间)可能与执行代码有关。

6 个答案:

答案 0 :(得分:7)

您是否将按钮定义为默认操作?

如果是,那么该控件将吞下Enter键。

也许这就是你的答案。您需要在提交按钮上将DefaultAction属性设置为true。

答案 1 :(得分:0)

尝试使用KeyDown事件。

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        MessageBox.Show("Enter");
    }
}

答案 2 :(得分:0)

也许您应该使用表单的“AcceptButton”将其设置为提交按钮。认为这就是你真正的......

答案 3 :(得分:0)

您遗漏了一个重要的位,您必须将Handled属性设置为true或false,具体取决于条件......

void tbPassword_KeyPress(object sender, KeyPressEventArgs e)
{
    MessageBox.Show(e.KeyChar.ToString());
    if (e.KeyCode == Keys.Enter){
      // This is handled and will be removed from Windows message pump
      e.Handled = true; 
    }
}

答案 4 :(得分:0)

试试这个

textBox1.KeyPress += new KeyPressEventHandler(textBox1_KeyPress);

void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == '\r')
    {
        MessageBox.Show("Enter Key Pressed", "Enter Key Pressed", MessageBoxButtons.OK);
    }
}

答案 5 :(得分:0)

转到你的表格......

在基本形式中更改此

FormName.AcceptButton = buttonName;

这会读取自动输入的密钥日志文件。

如果您不希望用户看到接受按钮

,则可以执行此操作

buttonName.Visible = false; FormName.AcceptButton = buttonName;

AcceptButton会自动从键盘上读取回车键