当我使用 KeyUp 事件时 MessageBox 没有关闭

MessageBox doesn't close when I use KeyUp event

我的表单有一个用于输入的文本框,一个用于保存的列表视图。

用户在文本框中输入数字,并输入回车,程序检查输入数字的长度和重复项

  1. 文本框 KeyUp 事件

    private void txb_MList_num_KeyUp(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            if (check_MList_dup())
            {
                lstv_MList.Items.Add(txb_MList_num.Text);
                allList.Add(txb_MList_num.Text);
                txb_MList_num.Text = "";
            }
        }
    }
    
  2. check_MList_dup()

    private bool check_MList_dup()
    {
        bool OK = true;
        if (txb_MList_num.TextLength < 11)
        {
            MessageBox.Show("Input more text(length = 11)");
            return false;
        }
        else
        {
            for (int i = 0; i < allList.Count; i++)
                if (allList[i].Equals(txb_MList_num.Text))
                {
                    MessageBox.Show("It's duplication.");
                    return false;
                }
        }
        return OK;
    }
    

但是用户输入关闭 MessageBox,程序再次显示 MessageBox...在使用鼠标之前。

我用断点调试,当MessageBox出现时事件没有发生

但是删除断点,MessageBox重复了

我用e.KeyCode == Keys.Enter && this.Focused

this.Focused 总是 return false .

如何关闭 MessageBox?

您可以尝试使用txb_MList_num.KeyDown事件

根据 MSDN:-

"KeyDown event Occurs when a key is pressed while the control has focus."

您可以使用 PreviewKeyDown:

private void OnPreviewKeyDown(object sender, KeyEventArgs e)
{
    if (Keyboard.IsKeyDown(Key.Enter))
    {
        // Do your staff here...
    }
}