Csharp/C#教程:UIElement.AddHandler()vs .Event + = Definition分享


UIElement.AddHandler()vs .Event + = Definition

1.问题的一部分:这两个事件注册有什么区别?

_popUp.AddHandler(PreviewMouseLeftButtonDownEvent, new MouseButtonEventHandler(PopUp_PreviewMouseLeftButtonDown)); _popUp.PreviewMouseLeftButtonDown += new MouseButtonEventHandler(_popUp_PreviewMouseLeftButtonDown); 

2.问题的一部分:或最终与…相关

 popUp.Opened += PopUp_Opened; 

根据Redgate的Reflector ,没有区别。 两种方法最终都调用内部方法EventHandlerStore.AddRoutedEventHandler 。 这是PreviewMouseLeftButtonDown事件的add访问器的reflection器输出(在类UIElement ):

 public void add_PreviewMouseLeftButtonDown(MouseButtonEventHandler value) { this.AddHandler(PreviewMouseLeftButtonDownEvent, value, false); } 

如您所见,它为您调用UIElement.AddHandler

在编辑问题之前,您询问弹出窗口的已Opened事件。 在这种情况下,存在一个区别:首先, Opened事件不是作为路由事件实现的,而是作为一个简单事件实现的,因此您甚至无法对其使用AddHandler调用。 其次,reflection器显示在EventHandlerStore中调用了一个不同的方法,它将处理程序添加到一个简单的委托集合中。

重要的可能是AddHandler(xxx,xxx, false)

如果使用true那么您可以捕获已经处理过的事件,如果您像TextBox这样inheritance类控件,这将非常有用。

上述就是C#学习教程:UIElement.AddHandler()vs .Event + = Definition分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1018450.html

(0)
上一篇 2022年1月3日
下一篇 2022年1月3日

精彩推荐