c# – 从控件中取消注册类处理程序 – WPF

我已经在
WPF的文本框中注册了GotFocusEvent的事件处理程序.

EventManager.RegisterClassHandler(typeof(TextBox), TextBox.GotFocusEvent, new RoutedEventHandler(TextBox_GotFocus));

现在,有没有办法从文本框中删除已注册的处理程序?

更新:
我检查了以下链接

WPF Custom Routed Events – How to UnSubscribe?

但是,它没有帮助我,因为上面提到的控件是自定义控件,因为在我的情况下它是默认的TextBox控件.

在我的情况下,我无法找到RemoveHandler.有什么建议?

最佳答案 正如您的问题的评论中所述,类处理程序无法取消注册.我给你的建议是:在你的处理程序的开头添加一个if语句,检查实际的方法体是否应该执行.这可能如下所示:

private void MyTextBoxClassHandler (object sender, RoutedEventArgs e)
{
    if (CheckIfHandlerShouldExecute() == false)
        return;

    // The actual code that should be executed in the handler resides here.
}

这不会阻止调用处理程序,但如果不满足某个条件,则不会执行逻辑.

点赞