在wpf窗口中删除事件处理程序

np.*_*np. 2 wpf window event-handling

在我们的wpf应用程序中,我们在窗口的构造函数中添加事件,如下所示:

AddHandler(Keyboard.KeyUpEvent, (KeyEventHandler)HandleKeyDownEvent);

        this.Closing += new System.ComponentModel.CancelEventHandler(WindowF_Closing);
        this.Loaded += new RoutedEventHandler(WindowF_Loaded);
Run Code Online (Sandbox Code Playgroud)

在关闭事件中删除这些事件以便放置窗口是一个好主意:

RemoveHandler(Keyboard.KeyUpEvent, (KeyEventHandler)HandleKeyDownEvent);

        this.Closing -= new System.ComponentModel.CancelEventHandler(WindowF_Closing);
        this.Loaded -= new RoutedEventHandler(WindowF_Loaded);
Run Code Online (Sandbox Code Playgroud)

Sam*_*ack 6

如果事件的发布者的寿命超过订阅者,则只需显式删除事件处理程序.

在您的情况下,ClosingLoaded事件的发布者本身就是窗口,因此无需取消订阅该事件.然而,键盘将会存在很长时间,因此取消订阅KeyUpEvent是一个好主意.