首页 > 解决方案 > 如何取消 PreviewKeyDown 事件中的关键操作

问题描述

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

标签: c#winforms

解决方案


尝试这个:

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

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

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

推荐阅读