父窗口设计为附加了 keyup 事件。MainWindow 如下所示:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_KeyUp(object sender, KeyEventArgs e)
{
if (e != null && e.Key == Key.Return)
{
MessageWindow msgWindow = new MessageWindow("KEY UP");
msgWindow.Show();
}
}
}
MessageWindow 有一个按钮 OK 来关闭窗口,如下所示:
public partial class MessageWindow : Window
{
public MessageWindow()
{
InitializeComponent();
}
public MessageWindow(string message) : this()
{
txtMess.Text = message;
}
private void btnOk_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
}
在父级接收输入键为 [Return] 时,将初始化并显示一个新的子窗口。按 TAB 聚焦 OK 按钮,然后按 Enter。子 MessageWindow 再次弹出。
原因:当子窗口按下 RETURN 键关闭子窗口时,父窗口收到 KeyUp 事件。
请提供一种方法来停止父级处理 KeyUp 事件,而不是使用 FLAG。