首页 新闻 会员 周边

事件参数类是什么

0
悬赏园豆:5 [已解决问题] 解决于 2013-11-20 21:41

就是这么简单,结合delegate的实现,我们可以将自定义事件的实现归结为以下几步:
1.定义delegate对象类型,它有两个参数,第一个参数是事件发送者对象,第二个参数是事件参数类对象。
2.定义事件参数类,此类应当从System.EventArgs类派生。如果事件不带参数,这一步可以省略。
3.定义"事件处理方法,它应当与delegate对象具有相同的参数和返回值类型"
4.用event关键字定义事件对象,它同时也是一个delegate对象
5.用+=操作符添加事件到事件队列中(-=操作符能够将事件从队列中删除)。
6.在需要触发事件的地方
用调用delegate的方式写事件触发方法一般来说,此方法应为protected访问限制,既不能以public方式调用,但可以被子类继承。名字是OnEventName。
7.
在适当的地方调用事件触发方法触发事件

第二步讲的事件参数类是什么呢

太笼统的主页 太笼统 | 初学一级 | 园豆:4
提问于:2013-11-20 14:53
< >
分享
最佳答案
0

你总结的太复杂了,就三点:

一、定义委托(包括委托类型和委托实例,委托实例即事件对象)

二、触发事件(在哪些地方调用这个委托)

三、订阅事件

收获园豆:5
空明流光 | 初学一级 |园豆:106 | 2013-11-20 16:07

参数不一定要从EventArgs类派生,可以定义不要任何参数的事件,主要看你自己哪种方便了

空明流光 | 园豆:106 (初学一级) | 2013-11-20 16:08

@沧海一杰: 典型的.net标准事件是一个叫EventHandler的委托,这个委托的原型是 void(object sender,EventArgs e), 你如果不打算采用这种两个参数的事件,完全可以无视 EventHandler和EventArgs这两个类型。

空明流光 | 园豆:106 (初学一级) | 2013-11-20 16:12

@沧海一杰: 说实话,事件简单的很。 做上一两个交互性比较强的自定义用户控件就永远也忘不了了。

空明流光 | 园豆:106 (初学一级) | 2013-11-20 16:13

@沧海一杰: 您能告诉我  事件生成事件数据  这句话是什么意思吗

太笼统 | 园豆:4 (初学一级) | 2013-11-20 20:18

@太笼统:针对事件来说,没有任何意义,可能是一个特定语境中的描述。 事件其实是可以脱离语言来看的,从其它语言来看,根本就没有委托的概念,委托只是一个对事件参数的封装。

现实世界中,事件就是一个突发的事件,然后要通知主体,主体会作处理。 比如你执行一个长时间的下载任务,任务开始进触发一个开始事件。每下载完1M,你触发一个进度改变事件,告知调用者(想传哪些参数是通过委托来实现的,这就是委托在事件中真正的用处,比如进度,总长度,速度),调用者收到这个信息后,更新下载进度。下载完成后可以再触发一个完成事件,调用者更新下载任务的状态。

空明流光 | 园豆:106 (初学一级) | 2013-11-20 21:37
其他回答(2)
0

你将 EventArgs 翻译成中文,就叫着"事件参数",由于在C#语言中,EventArgs 又表示类,所以就是"事件参数类"-EventArgs Class.

Launcher | 园豆:45045 (高人七级) | 2013-11-20 15:12
0

继承自EventArgs的类,继承的类可以定义属性,使得原本不能传数据的事件参数,可以传递数据,我有写过一篇关于事件的文章

http://www.cnblogs.com/zery/p/3415479.html

Zery | 园豆:6151 (大侠五级) | 2013-11-20 15:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册