C# - 在MessageBox中按Enter键触发控制KeyUp事件

WoF*_*gel 11 c# winforms

系统:Windows7 Pro,Visual Studio 2010,C#

我有一个文本框:textBox1 我设置了它的事件:

textBox1.KeyUp += new KeyEventHandler(textBox1_KeyUp);

private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        button1.PerformClick();
    }
}

private void button1_Click(object sender, EventArgs e)
{ 
    if (string.IsNullOrEmpty(textBox1.Text))
    {
        MessageBox.Show("Invalid data", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        return;
    } 
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,问题是,当输入的数据是无效的,因而MessageBox显示,当我打ENTERMessageBoxOK按钮,这也触发textBox1_KeyUp,从而导致MessageBox再次出现.因此,它会触发MessageBoxOK按钮,使其消失,并触发该按钮,textbox_keyUp然后再次显示消息框.

谢谢你的帮助.

Han*_*ant 19

是的,消息框响应按键事件.你的TextBox也应如此.使用KeyDown事件,问题解决了.还解决了用户通常听到的恼人的BEEP.

    private void textBox1_KeyDown(object sender, KeyEventArgs e) {
        if (e.KeyData == Keys.Enter) {
            button1.PerformClick();
            e.SuppressKeyPress = true;
        }
    }
Run Code Online (Sandbox Code Playgroud)