C#KeyEvent不';t记录回车键
我一直在用C#制作这个登录表单,我想在用户单击submit或按下enter/return键时“提交”所有数据 我已经用KeyEvents进行了一些测试,但到目前为止没有任何效果C#KeyEvent不';t记录回车键,c#,events,keyboard-events,keyevent,C#,Events,Keyboard Events,Keyevent,我一直在用C#制作这个登录表单,我想在用户单击submit或按下enter/return键时“提交”所有数据 我已经用KeyEvents进行了一些测试,但到目前为止没有任何效果 void tbPassword_KeyPress(object sender, KeyPressEventArgs e) { MessageBox.Show(e.KeyChar.ToString()); } 上面的代码是为了测试事件是否在一开始就起作用。 它工作得很好,当我按'd'时,它显示我的'd',当我按'
void tbPassword_KeyPress(object sender, KeyPressEventArgs e)
{
MessageBox.Show(e.KeyChar.ToString());
}
上面的代码是为了测试事件是否在一开始就起作用。
它工作得很好,当我按'd'时,它显示我的'd',当我按'8'时,它显示我的'8',但按enter键没有任何作用
所以我认为这是因为enter实际上并没有绑定到一个字符,但它确实显示了backspace,它工作得很好,所以我很困惑为什么它没有注册我的enter键
因此,问题是:
如何记录回车键?为什么它现在不像应该的那样记录按键呢?
注意:我已将事件放在文本框中
tbPassword.KeyPress += new KeyPressEventHandler(tbPassword_KeyPress);
因此,当选择文本框时按下enter按钮时(当然这是整个时间),它会触发,这可能与代码的执行有关。您是否有一个按钮被定义为默认操作 如果是这样,那么该控件将吞噬回车键
也许这就是你的答案。您需要在“提交”按钮上将DefaultAction属性设置为true。请改用KeyDown事件
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
MessageBox.Show("Enter");
}
}
也许您应该使用表单的“AcceptButton”将其设置为submit按钮。认为这才是你真正想要的…你漏掉了一个重要的部分,你必须根据条件将
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;
}
}
无效tbPassword\u按键(对象发送器,按键事件参数e)
{
Show(例如KeyChar.ToString());
如果(e.KeyCode==Keys.Enter){
//这将被处理,并将从Windows消息泵中删除
e、 已处理=正确;
}
}
试试这个
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);
}
}
去你的表格
在基本形式中,改变这个
FormName.AcceptButton=按钮名称
这将读取enter的密钥日志文件。。。自动
如果不希望用户看到“接受”按钮,则可以执行此操作
buttonName.Visible=假;
FormName.AcceptButton=按钮名称
AcceptButton自动读取键盘上的enter键我在电脑上测试过,效果很好。听起来正是我需要的。但是我如何将DefaultAction分配给按钮呢?谢谢,我现在已经解决了。我把这个按钮作为默认操作,但它不起作用。但后来我发现它会触发按钮的“点击”事件,我正在处理“鼠标点击”事件。我想这是单击和鼠标单击之间的唯一区别…事实上,我经常忘记将其添加到我的事件处理程序中,谢谢,但这并不能解决我的问题…您订阅了该事件吗?textBox1.KeyDown+=新的KeyEventHandler(textBox1\u KeyDown);是的,我这样做了,它再次适用于所有键,但输入按钮。这可能是我的电脑的错误而不是代码吗?您也可以添加submitButton.PerformClick();如果您希望在submitButtonSorry上触发按钮单击事件,则不起作用。。。有没有办法检查enter键是否被“阻止”或被中断?