C# EventHandler
作者:互联网
1.C# 中的EventHandler实例详解
先上一个形象的例子
//这里定义了一个水箱类
public class 水箱
{
//这是水箱的放水操作
public void 放水() { }
//这是水箱的属性
public double 体积;
//这是水箱空的事件
public event EventHandler 水箱空;
}
//这里定义了一个加水器类
public class 加水器
{
public void 加水(Object sender, EventArgs e)
{
//对需要加水的水箱进行加水操作
}
}
public class User
{
public User()
{
//实例化水箱类
水箱1 = new 水箱();
//实例化加水器类
加水器1 = new 加水器();
//加水器注册水箱空事件
水箱1.水箱空 += new EventHandler(加水器1.加水);
}
private 加水器 加水器1;
private 水箱 水箱1;
}
C#的委托最经典的解释:
例子:
this.Activated += new EventHandler(Form1_Activated);
这是一个委托的原理:
this.Activated=你吃完饭;
Form1_Activated=喊我一声
这句话的意思就是把这两个事放在一起了,意思就是叫你吃完饭了喊我一声。我委托你吃完饭了,喊我一声。这样我就不用过一会就来看一下你吃完了没有了,已经委托你了。
2.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);
原文链接:https://blog.csdn.net/qq_40666028/article/details/80916020
23WilliamDing 发布了3 篇原创文章 · 获赞 0 · 访问量 28 私信 关注标签:EventHandler,C#,水箱,ThresholdReached,事件,加水,public 来源: https://blog.csdn.net/qq_33134503/article/details/104050623