2010-03-20 119 views
4

我一直在C#中创建这个登录表单,并且我想在用户点击提交或按下输入/返回键时“提交”所有数据。C#KeyEvent不记录输入/返回键

我一直在用KeyEvents测试一下,但到目前为止还没有工作。

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

上面的代码是测试事件是否在第一个地方工作。 它完美的工作,当我按'd'它显示我'D'时,我按'8'它显示我'8',但按下输入不会做任何事情。

所以我虽然这是因为输入不是真的绑定到一个字符,但它确实显示退格,它工作得很好,所以它让我感到困惑,为什么它没有注册我的输入密钥。

所以问题是: 如何记录输入/返回键?为什么现在不按键记录按键?

注:我已经把事件在TextBox

tbPassword.KeyPress += new KeyPressEventHandler(tbPassword_KeyPress); 

所以在选择的文本框按钮被按下时,进入(这是当然的全部时间),它触发也许有与代码的执行有关。

+1

回车键尝试使用的keydown /向上,而不是我测试了我的电脑上 – 2010-03-20 16:43:17

+0

,它工作得很好。 – 2010-03-20 16:54:37

回答

5

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

如果是这样,那么该控件会吞噬回车键。

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

+0

听起来就像我需要的。但是,我如何将DefaultAction分配给按钮? – Pieter888 2010-03-20 17:27:51

+0

谢谢,我已经明白了。 我使按钮成为我的默认操作,但它不起作用。 但后来我发现它会触发按钮的“单击”事件,我正在使用“MouseClick”事件。 我想这是Click和MouseClick之间的唯一区别... – Pieter888 2010-03-20 17:59:22

0

改为尝试KeyDown事件。

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

仍然不适用于我... – Pieter888 2010-03-20 17:29:40

+0

您是否订阅了该活动? textBox1.KeyDown + = new KeyEventHandler(textBox1_KeyDown); – 2010-03-20 17:42:30

+0

是的,我确实这样做了,它再次适用于所有按键,但是输入按钮。 这可能是我的电脑,而不是代码的错误? – Pieter888 2010-03-20 17:46:39

0

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

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; 
    } 
} 
+0

事实上,我倾向于忘记添加到我的事件处理程序不时,谢谢但它不能解决我的问题... – Pieter888 2010-03-20 17:33:05

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); 
    } 
} 
+0

也可以添加 submitButton.PerformClick(); 如果你想在你的submitButton上触发一个按钮点击事件 – galford13x 2010-03-20 17:50:35

+0

对不起,不起作用... 有没有办法检查回车键是否被某种方式'阻塞'或以某种方式中断? – Pieter888 2010-03-20 17:50:44

0

转到您的形式...

的基本形式改变这一

FormName.AcceptButton = buttonName;

这会自动读取输入的击键记录文件... ..

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

buttonName.Visible =假,你可以做到这一点; FormName。AcceptButton = buttonName;

的AcceptButton自动读取从键盘