MessageBox не фокусируется

Когда я нажимаю кнопку ввода, MessageBox Показано. я хочу MessageBox закрывать, когда я снова нажимаю кнопку ввода, как обычно. Проблема в том, что у него нет фокуса, но TextBox имеет и когда я нажимаю кнопку ввода _textBox_OnKeyUp EventHandler вызывается снова и снова. Как я могу решить мою проблему?

Разметка:

<Grid>
    <TextBox Name="_textBox"
        Width="100"
        Height="30"
        Background="OrangeRed"
        KeyUp="_textBox_OnKeyUp"/>
</Grid>

Код:

private void _textBox_OnKeyUp(object sender, KeyEventArgs e)
{
    if (e.Key != Key.Enter)
        return;

    MessageBox.Show("Bla-bla");
}

2 ответа

Решение

Вы могли бы использовать KeyDown событие вместо того, чтобы MessageBox отвечает на KeyDown событие:

<TextBox Name="_textBox"
         Width="100"
         Height="30"
         Background="OrangeRed"
         KeyDown="_textBox_OnKeyDown"/>

А также:

private void _textBox_OnKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key != Key.Enter)
       return;

    MessageBox.Show("Bla-bla");
}

Я рекомендую использовать этот метод Messagebox.

MessageBox.Show(Window, String)

Взято из MSDN:

Отображает окно сообщения перед указанным окном. В окне сообщения отображается сообщение и возвращается результат.

Вы можете использовать это как следующее:

MessageBox.Show(Application.Current.MainWindow, "I'm on top of teh window so I should get focus");

РЕДАКТИРОВАТЬ:

Вы должны вернуть фокус своему главному окну перед вызовом MessageBox.

private void _textBox_OnKeyUp(object sender, KeyEventArgs e)
{
    if (e.Key != Key.Enter)
        return;

    //this.Focus() or at least YourWindow.Focus()
    MessageBox.Show("Bla-bla");
}
Другие вопросы по тегам