MessageBox没有关注焦点

时间:2016-04-06 07:30:02

标签: c# wpf focus messagebox keyup

点击进入按钮后,会显示MessageBox。当我像往常一样再次点击进入按钮时,我希望MessageBox关闭。问题是 - 它没有焦点,但TextBox有,当我点击enter-button _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 个答案:

答案 0 :(得分:3)

您可以使用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");
}

答案 1 :(得分:0)

我建议使用Messagebox的this method

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