【C#】EventHandler委托详解

MSDN的解释:EventHandler即事件委托,表示用于处理不具有事件数据的事件的方法。

字面上理解就是一个事件处理器,将一个事件与处理事件的方法联系起来的一种机制。
C++中通过函数指针来完成的。
在C#中的事件基于委托模型。委托模型遵守观察者设计模式,使订阅者(接收或处理事件的类)能够向提供方(发送或引发事件的类)注册并接收相关通知。

步骤:

  • 首先声明一个委托,一般命名为:NameEventHandler
// 这些委托没有返回类型值,并且接受两个参数(事件源的对象和事件数据的对象)。
public delegate void ThresholdReachedEventHandler(object sender, ThresholdReachedEventArgs e);
  • 然后声明一个事件,并指定事件的委托类型
// event关键字代表事件,返回类型为委托;
public event EventHandler 事件名;
  • 同时,创建引发事件的方法,一般命名为:OnEventName
// 通常为了引发事件,会添加一个标记为protected和virtual的方法,以允许派生类重写引发事件的逻辑。
protected virtual void OnThresholdReached(EventArgs e)
{
    EventHandler handler = ThresholdReached;
    if (handler != null)
    {
        handler(this, e);
    }
}
  • 再定义一个事件处理程序方法,处理事件。
static void c_ThresholdReached(object sender, EventArgs e)
{
    Console.WriteLine("The threshold was reached.");
}
  • 最后使用加法赋值运算符 (+=) 来为事件附加事件处理程序。+=表示添加事件,-=表示删除事件。
// Counter类中需要拥有一个名为ThresholdReached的事件
Counter c = new Counter();
c.ThresholdReached += c_ThresholdReached;   
// 以下是老的C#1.0的语法
// c.ThresholdReached += new ThresholdReachedEventHandler(c_ThresholdReached);

以下是C# EventHandler委托的一个类比解释
from: https://www.jb51.net/article/111973.htm
例子:

this.Activated += new EventHandler(Form1_Activated);

这是一个委托的原理.

this.Activated=你吃完饭;
Form1_Activated=喊我一声

这句话的意思就是把这两个事放在一起了,意思就是叫你吃完饭了喊我一声。我委托你吃完饭了,喊我一声。这样我就不用过一会就来看一下你吃完了没有了,已经委托你了。

  • 25
    点赞
  • 126
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值