0

父窗口设计为附加了 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] 时,将初始化并显示一个新的子窗口。按 T​​AB 聚焦 OK 按钮,然后按 Enter。子 MessageWindow 再次弹出。

原因:当子窗口按下 RETURN 键关闭子窗口时,父窗口收到 KeyUp 事件。

请提供一种方法来停止父级处理 KeyUp 事件,而不是使用 FLAG。

4

1 回答 1

0

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

于 2012-08-13T07:45:21.143 回答