父窗口的设计附加了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有一个按钮确定关闭窗口,如:
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。
答案 0 :(得分:0)
尝试使用PreviewKeyDown事件而不是KeyUp one