代码之家  ›  专栏  ›  技术社区  ›  monstr

MessageBox不聚焦

  •  3
  • monstr  · 技术社区  · 8 年前

    当我点击输入按钮时, MessageBox 如图所示。我想要 对话框 当我像往常一样再次单击enter按钮时关闭。问题是-它没有焦点,但 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");
    }
    
    2 回复  |  直到 8 年前
        1
  •  3
  •   Salah Akbari    8 年前

    你可以使用 KeyDown 事件,因为 MessageBox 响应 按下 事件:

    <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");
    }
    
        2
  •  1
  •   Jean-Charbel VANNIER    8 年前

    我建议使用 this method 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");
    }