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");
}
当我点击输入按钮时,显示 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");
}