C# 在按键事件中按Enter键后如何处理命令

C# 在按键事件中按Enter键后如何处理命令,c#,keydown,enter,C#,Keydown,Enter,我正在编写一个仅由键盘上的numblock控制的应用程序,我需要解决以下代码的问题: private void btnSaveCorrection_KeyDown(object sender, KeyEventArgs e) { MessageBox.Show("HEY"); if (e.KeyCode == Keys.Enter) { MessageBox.Show("HEY"); // Save to DB and jump to n

我正在编写一个仅由键盘上的numblock控制的应用程序,我需要解决以下代码的问题:

private void btnSaveCorrection_KeyDown(object sender, KeyEventArgs e)
{
    MessageBox.Show("HEY");

    if (e.KeyCode == Keys.Enter)
    {
        MessageBox.Show("HEY");
        // Save to DB and jump to next control
    }
    else
    {
        MessageBox.Show("WTF");
        // if e.KeyCode is [+] or [-], jump to next/previous control
    }
}
问题是: 当我按Enter键时,什么也没发生。当我按下任何其他键时,MessageBox WTF显示。为什么按下Enter键时忽略KeyDown事件中的所有代码?如何修复它


谢谢你的回复。

好吧,对我来说,如果你链接KeyUp事件而不是KeyDown事件,它就可以工作了

我认为问题在于enter键被认为是点击按钮的默认行为


我的建议是链接KeyUp事件而不是KeyDown事件。

您的页面上是否定义了一个默认按钮来抓取enter键?按下enter键后设置断点时,KeyCode是什么?在断点调试期间还发生了什么?它正常工作,所以您必须有其他事情在进行。它是否曾经到达事件处理程序?是否将另一个控件设置为默认的接受按钮?如果在选择按钮时按enter键,我相信它会单击该按钮,并且会在事件处理程序之前触发。输入和按钮的处理方式不同-您可能希望在窗体或类似行上将EnableKeyPreview设置为true?这是winforms还是WPF?谢谢,KeyUp事件中的相同代码也可以。怎么可能呢?这与windows窗体控件的默认输入行为有关。回车键激活控件,如果是按钮,则单击它。看这里: