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");
}