概述
事件属于委托的一个子集,像我们平时界面上的鼠标点击按钮后响应事件、事件的发布和订阅等都需要用到委托.通过委托可以很好的实现类之间的解耦好。事件委托EventHandler的
函数原型如下:delegate 表示这个个委托,事件委托没有返回值,有两个入参,sender是事件触发的对象,e是一个泛型的事件类型参数
public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e);
用法举例
用法举例1:窗体关闭事件
public void Cancel(object obj, bool e)
{
if (e)
{
sw.AppendLine("try clsoe window");
}
else
{
sw.AppendLine("clsoe window is cancel");
}
}
//事件委托1,事件是委托的子集
EventHandler<bool> windowTryClose = Cancel;
windowTryClose(this, false);
这里在定义了一个委托EventHandler<bool>,将方法Cancel委托给他,然后嗲用委托执行。
注意:EventHandler<bool> windowTryClose = Cancel;是
EventHandler<bool> windowTryClose = new EventHandler<bool>(Cancel);的简写
传入的参数是false,所以运行结果:
clsoe window is cancel
用法举例2 :按钮点击事件
//事件委托2
Button button = new Button();
button.ClickEvent += Button_Click;
button.ClickAction();
public void Button_Click(Object sender, EventArgs args)
{
sw.AppendLine("这是按钮点击事件");
}