我有一个按钮,当按“ 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);
}
答案 0 :(得分:0)
这是理想的行为。
您可以在此处执行的操作是删除Button的KeyUp事件,而直接依赖于Click事件。每次单击Enter(以Button为焦点)时,都会触发Click事件。
这将确保您获得所需的行为。