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

标签 wpf event-handling window

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

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

        this.Closing += new System.ComponentModel.CancelEventHandler(WindowF_Closing);
        this.Loaded += new RoutedEventHandler(WindowF_Loaded);

在关闭事件中删除这些事件以便处理窗口是否是个好主意:
RemoveHandler(Keyboard.KeyUpEvent, (KeyEventHandler)HandleKeyDownEvent);

        this.Closing -= new System.ComponentModel.CancelEventHandler(WindowF_Closing);
        this.Loaded -= new RoutedEventHandler(WindowF_Loaded);

最佳答案

如果事件的发布者比订阅者存活的时间长,您只需要显式删除事件处理程序。

在您的情况下,Closing 的发布者和 Loaded events 是窗口本身,因此无需取消订阅该事件。然而,键盘会存在很长时间,所以取消订阅 KeyUpEvent是个好主意。

关于wpf - 在 wpf 窗口中删除事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2229488/

相关文章:

c# - 将单个 WPF 控件绑定(bind)到多个项目

c# - 使用 MVVM Light 的 Messenger 在 View 模型之间传递值

php - 为什么一个非常好的 PHP 框架 - Qcodo(或 Qcubed - 它的分支) - 如此不受欢迎?

javascript - 网格初始化后的 Kendo 网格事件处理

c# - 显式打开时上下文菜单不显示绑定(bind)项目(通过 ContextMenu.IsOpen)

c# - 在工具提示 WPF 上使用 Storyboard

java - Swing 事件麻烦

javascript - 扩展 : destroy and reopen modal window

css - 如何将按钮安装到悬停框?而且按钮显示不正确?

Jquery在父窗口中从子窗口运行函数