MessageBox не закрывается, когда я использую событие KeyUp - PullRequest
0 голосов
/ 14 мая 2018

Моя форма имеет одно текстовое поле для ввода, просмотр списка для сохранения.

Пользовательский номер ввода в текстовом поле и ввод ввода, программа проверяет длину номера ввода и дублирование

  1. Событие KeyUp textbox

    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 всегда возвращать false.

Как я могу закрыть MessageBox?

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Вы можете использовать PreviewKeyDown :

private void OnPreviewKeyDown(object sender, KeyEventArgs e)
{
    if (Keyboard.IsKeyDown(Key.Enter))
    {
        // Do your staff here...
    }
}
0 голосов
/ 14 мая 2018

Вы можете попробовать и использовать txb_MList_num.KeyDown событие

Согласно MSDN: -

«Событие KeyDown Происходит при нажатии клавиши, когда элемент управления находится в фокусе.»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...