按键事件陷入无限循环

时间:2019-01-24 17:47:35

标签: c# winforms

我有一个按钮,当按“ enter”键时将显示一个MessageBox,如果再次按Enter键以关闭MessageBox,它将进入无限循环。如何忽略在MessageBox上触发多个按键按下事件?

this.okButton.KeyUp += new KeyEventHandler(this.okButton_KeyUp);

private void okButton_KeyUp(object sender, KeyEventArgs e)
{
    if (e.Handled) { return; }
    if (e.KeyCode == Keys.Enter && okButton.Enabled)
    {
        okButton_Click(null, null);
        e.Handled = true;
    }
}

private void okButton_Click(object sender, EventArgs e)
{
    MessageBox.Show("Hello World", "", MessageBoxButtons.OK);
}

1 个答案:

答案 0 :(得分:0)

这是理想的行为。

  1. 在Key Down事件中,消息框被关闭。
  2. 在Key Up事件中,再次打开消息框。

您可以在此处执行的操作是删除Button的KeyUp事件,而直接依赖于Click事件。每次单击Enter(以Button为焦点)时,都会触发Click事件。

这将确保您获得所需的行为。