1. 事件的委托大多是采用(Object sender,EventArgs e)这样的参数形式(好像是.NET推荐的,但你用其他的参数形式也无不可 只是可能不够规范)。
EventArgs e我的体会就是一般用来进行相关数据的传递(如果这样一般都是写一类继承
EventArgs类,将相关的信息写成属性,这样订阅该事件的类就能得到该事件中的相关数据进行相应的处理)。
2. e是事件参数
//包含跟该事件相关的信息,它用来辅助你处理事件
比如说你用鼠标点击窗体,那么e是会包含点击的位置等等
P.S.根据事件的不同,事件参数类型可能不同。但都以EventArgs为基类
3. 有一个叫做EventHandler 的家伙,他会告诉你(主程序),有一些事情发生了:这个事情是谁导致的呢?是某个object类型对象导致的,它用Sender来表示。这个事情是什么事呢?e的内容就是事情的内容了。
EventArgs 和 RoutedEventArgs什么区别
面向对象中, 基类是相对的概念. 比如类B继承了类A, 那么就说A是B的基类, 也叫超类, 父类等说B是A的子类, 也叫派生类, 继承类等.
所以这里说EventArgs是包含事件数据的类的基类的意思是:
EventArgs是一个用于做事件细节传递的类. 如果您想自定义个事件传递类来传递自定义事件中的数据, 那么您应该继承EventArgs类.
找不到EventArgs类型扩展方法“Cancle”(是否缺少using)指令或程序集引用)
RoutedEvent主要是区别于传统的.NET Event,支持事件路由,主要是为了让XAML-based Application更容易处理UI事件逻辑。
传统的.NET Event机制很简单,就是单纯的委托。而RoutedEvent则提供了在Visual Tree中路由事件的能力,事件路由简单说就是在Visual Tree中贯穿地触发事件,主要有两种模式:Bubbling和Tunneling。
Bubbling是一种上浮式的路由,事件可以由Visual Tree自底向上地触发。首先是事件源触发,然后沿Visual Tree逐级触发父元素的路由事件,直到顶端。例如WPF中的MouseDown事件,将首先在用户点击的元素触发事件,再逐级向上路由到整个窗体。每一个元素都可以针对这个事件做出自己的响应。
Tunneling是一种下潜式的路由,跟Bubbling相反,从顶级元素开始触发直到焦点元素。例如PreviewKeyDown事件,将首先从顶级窗体开始触发,直到按键时用户焦点所在的元素上。
路由事件在定义复杂的层叠对象时特别有用,例如在Button中包含一个图像和文本,图像和Button本身分别想要对用户点击做出响应,就可以通过侦听路由事件很方便的实现。在传统事件机制下,一个元素为了响应自己附近的用户操作不得不订阅子元素或者父元素的事件,这会让XAML代码变得很难维护。
方法里面传两个参数 (this,eventargs.empty)
你把这一句
private void Form1_FormClosing(object sender, EventArgs e)
改成
private void Form1_FormClosing(object sender, CancelEventArgs e)
this是指当前的对象
eventargs是事件的集合
(this, eventargs.empty)中的this表示把当前实例做为一个参数传入,eventargs.empty表示传入一个空的事件源。eventargs是一个玫举类型的,其中一个值empty表示空
以上就是关于求高人讲解:EventArgs e 的作用,一定要详细讲解!要易懂!在例子中,比如:在同一个类中调用事件方法:全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!