MessageBox 没有获得焦点

MessageBox doesn't take focus

当我点击输入按钮时,显示 MessageBox。当我像往常一样再次单击输入按钮时,我希望 MessageBox 关闭。问题是 - 它没有焦点,但 TextBox 有,当我单击输入按钮时 _textBox_OnKeyUp 事件处理程序被一次又一次地调用。我该如何解决我的问题?

标记:

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

您可以改用 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 的 this method

MessageBox.Show(Window, String)

摘自 MSDN :

Displays a message box in front of the specified window. The message box displays a message and returns a result.

您可以按以下方式使用它:

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

编辑:

在调用 MessageBox 之前,您应该将焦点返回到主 window。

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