父窗口从WPF中的子窗口处理Keyup事件

时间:2012-08-13 06:50:30

标签: wpf

父窗口的设计附加了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。

1 个答案:

答案 0 :(得分:0)

尝试使用PreviewKeyDown事件而不是KeyUp one