我已经在
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.
}
这不会阻止调用处理程序,但如果不满足某个条件,则不会执行逻辑.