您的位置:首页 > 编程语言 > C#

c#中点击事件的本质

2016-10-05 21:37 323 查看
事件是一种委托。你这个不是事件,只是一个名为 button1_Click() 的方法(函数)而已。

button1.Click 才是事件,事件需要绑定方法,例如 button1.Click += new EventHandler(button1_Click);,代表着 button1 的 Click 事件绑定到了 button1_Click() 方法上,或者说 button1_Click() 方法订阅了 button1 的 Click 事件。这样,当 button1 触发 Click 事件时,就会执行 button1_Click() 方法。

一个事件可以绑定多个方法,按照绑定的先后顺序依次执行。

事件是由对象监听的,本质上是C#中的代理,或者叫做委托,button1.Click += new EventHandler(button1_Click);中,Click是一个委托,该委托在Click行为发生的时候会广播,对于广播链中的函数,亦即事件处理函数,则采取相应的操作。你这里的就是事件处理函数,该函数带两个参数,一个是类型为object的形参sender,相当于是这个函数的发出者,因为事件处理函数可能被多个事件注册,例如有多个Button按钮都注册了该事件处理函数,因此,你可以在代码中使用:
Button btn=(Button)sender;
将其转化为Button,再执行一些其他的操作,确定事件的发出者是谁。
而EventArgs则是事件参数的意思,即Event Arguments的缩写,e相当于是携带了这个事件的一些消息。对于一些事件,例如MouseDown、KeyPress等,其中携带有光标的坐标或者按下的键值等。

从形式上看确实像函数 声明权限 返回值类型 方法名(参数。。)
如单价事件参数: object 代表当前单价对象(即按钮),EventArgs 与事件有关的属性等

但从运行机制上看却与函数有一定的区别
如如事件如何触发、怎样触发、谁控制事件的处理等的涉及消息机制
包括 消息发送 消息接收器 等
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: