Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#KeyEvent不';t记录回车键_C#_Events_Keyboard Events_Keyevent - Fatal编程技术网

C#KeyEvent不';t记录回车键

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',当我按'

我一直在用C#制作这个登录表单,我想在用户单击submit或按下enter/return键时“提交”所有数据

我已经用KeyEvents进行了一些测试,但到目前为止没有任何效果

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键是否被“阻止”或被中断?