如何取消 PreviewKeyDown 事件中的按键操作

Bud*_*est 5 c# winforms

我试图检测用户是否在文本框中按 ENTER 键,如果是,则将焦点移至按钮,而不执行单击按钮。到目前为止,我发现检测 ENTER 键的唯一方法是使用 PreviewKeyDown 事件。现在我可以检测到 ENTER 键,但是当将焦点更改到该按钮时,它会触发 Click 事件。在正常的 KeyDown 事件中,我可以使用“e.handled = true / false”,但是如何在 PreviewKeyDown 事件中执行此操作?

Yar*_*nov 3

尝试这个:

private void textBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
   if (e.KeyCode == Keys.Enter)
   {   
      e.IsInputKey = true;
      button1.Focus();
   }
}
Run Code Online (Sandbox Code Playgroud)

另外,为了减少声音效果,您可以使用以下事件监听器

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
   if(e.KeyValue == 13)
   { 
      e.SuppressKeyPress = true;
   }
}
Run Code Online (Sandbox Code Playgroud)