C# Visual Studio,当按钮获得焦点时如何检测 Enter 键按下

C# Visual Studio, how to detect Enter key press when a button has focus

我有以下代码可以检测回车键并且工作正常。但是,如果您单击表单上的一个按钮,它就会停止工作,即按下的按钮现在有焦点,然后按回车键直接进入该按钮。

private void Form1_Load(object sender, EventArgs e)
{
    KeyPreview = true;
}

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

我尝试了以下但没有成功;

  1. 使用表单 PreviewKeyEvent 而不是 keyUp
  2. 使用窗体 KeyDown 而不是 KeyUp
  3. 正在创建一个被选为表单的按钮 'AcceptButton'

我的解决方法是创建一个按钮,在加载表单 'selects' 时,将在输入时单击该按钮。然后让计时器 运行 将焦点保持在该按钮上,以防选择任何其他按钮。这似乎有点粗制滥造。

如有任何想法,我们将不胜感激。好像我遗漏了一些明显的东西。

菲尔

覆盖 ProcessCmdKey:

protected override bool ProcessCmdKey( ref Message msg, Keys keyData ) {
    if( keyData == Keys.Enter ) {
        // Enter is pressed

        return true; //return true if you want to suppress the key.
    }

    return base.ProcessCmdKey( ref msg, keyData );
}