首页 新闻 搜索 专区 学院

请教c#EventHandler的应用

0
悬赏园豆:20 [已解决问题] 解决于 2020-03-12 08:14

作为初学者,在学习委托事件时,学习的格式为
委托 delegate void 委托类型名(....);public delegate void mydelegate();
事件 [修饰符] event 委托类型名 事件名;public event mydelegate myevent;

在园子里学习大侠的文章《C# 多线程经典示例 吃苹果》时,发现了
“public EventHandler PutAction;//声明一个事件,当放苹果时触发该事件”的用法,

百度一下“EventHandler”,EventHandler表示将处理不包含事件数据的事件的方法,也是一个委托
EventHandler是系统自己的带参委托定义为:
public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e);

感觉
public Event Eventhandler ClickEvent;
其实就等同于声明
public delegate void Eventhandler();
public Event Eventhandler ClickEvent;
但是上面的应用省掉了event关键字!,网上能收到的信息里,EventHandler其更多的时候被定义成event(与event搭配使用),即事件的方式来使用。于event 隔开,单独使用EventHandler的文章没能搜索到,由于基础知识太薄弱,还处于自学状态,没能理解eventhandler作为事件委托如何单独使用及其要点,请各位大侠,详细指点一下,园豆不多,谢谢!

rossi1984的主页 rossi1984 | 初学一级 | 园豆:74
提问于:2020-03-01 17:57
< >
分享
最佳答案
0

通过学习了《C#中的委托和事件》(张子阳)的文章,了解了事件关键字event与eventhanlder使用的区别,以及注意事项,虽然楼下几位大侠的指点没能让我搞懂,但是也给出了一些思路,任然感谢几位大侠!

rossi1984 | 初学一级 |园豆:74 | 2020-03-12 08:13
其他回答(3)
0

推荐园子里的一篇博文 事件委托 EventHandler

收获园豆:5
dudu | 园豆:39035 (高人七级) | 2020-03-01 19:45
0

事件也是委托,就是特殊的委托,作用域不一样而已。EventHandler<TEventArgs>了解一下事件传值吧,概念性的东西不用太多纠结。我理解就是大概明白就行了。从封装的角度来说一般事件是给外部(上层)订阅的。

收获园豆:5
数据酷软件 | 园豆:128 (初学一级) | 2020-03-02 09:41
0

public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e);
是不是这么写法让你感到困扰了?

换一个
public delegate void EventHandler(object sender, string e);

这是定义一个有两个参数,无返回值的委托

//
这个TEventArgs就是泛指某个类

收获园豆:10
猝不及防 | 园豆:2035 (老鸟四级) | 2020-03-02 16:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册