当我使用KeyUp事件时,MessageBox不会关闭

时间:2018-05-14 09:38:56

标签: c# messagebox enter keyup

我的表单有一个输入文本框,listview for save。

文本框中的用户输入编号,输入输入,程序检查输入编号长度和重复

  1. textbox 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;
    }
    
  3. 但用户输入进入关闭MessageBox,程序再次显示MessageBox,再次......使用鼠标之前。

    我调试它使用断点,当MessageBox显示时,事件不存在。

    但是删除断点,重复MessageBox。

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

    this.Focused始终返回false

    如何关闭MessageBox?

2 个答案:

答案 0 :(得分:1)

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

根据MSDN: -

  

&#34; KeyDown事件在控件具有焦点时按下某个键时发生。&#34;

答案 1 :(得分:0)

您可以使用PreviewKeyDown

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