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();
        }
    }
}

ウィンドウを閉じるボタン OK を持つ 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();
    }
}

親で[戻る]として入力キーを受け取ると、新しい子ウィンドウが初期化されて表示されます。TAB を押して OK ボタンにフォーカスし、Enter を押します。子 MessageWindow が再びポップアップします。

理由: 子ウィンドウで RETURN キーを押して閉じると、親ウィンドウは KeyUp イベントを受け取ります。

FLAG を使用する以外に、親による KeyUp イベントの処理を停止する方法を提供してください。

4

1 に答える 1

0

KeyUp の代わりに PreviewKeyDown イベントを使用してみてください

于 2012-08-13T07:45:21.143 に答える