一.描述
事件就是突发事件,古代有黄巢起义,仅有七七事变,这些都属于事件。一个事件从发生到结束包括四个要素:什么事件、事件的发布者、事件的接受者、事件引发的处理。
二.事件机制
我们说的事件机制就是指事件四要素有机结合构成的一种机制。事件的发布者定义事件,并为事件订阅接受者,然后发布者发布事件,事件的接受者接受事件,并调用自己的方法处理事件,这既是事件机制运行的原理。这样我们给事件的发布者和处理这分配了职责:
事件发布者的职责:
1.定义事件
2.为订阅者订阅事件
3.将发生事件通知给订阅者
事件订阅者的职责:
1.接受事件
2.处理事件
事件的订阅者和接受者都是类的对象,将定义的事件通过委托的方式,委托给某个方法(即接受者调用的方法)处理,事件的定义如下:
[访问修饰符] event 委托类型 事件变量
事件的订阅是通过“+=”操作符,事件的订阅和多播委托的操作也一样,可以给事件添加一个或多个方法委托。
程序中事件的处理有三个步骤:首先定义事件,其次订阅事件,最后激发事件。下面是个完整的例子:
using System;
using System;
namespace MyDelegate
{
class Car
{
public delegate void delegateCar(string msg);
//定义刹车事件
public event delegateCar eventCar;
public void Stop()
{
//激发事件
event("刹车");
}
}
class CarHandler
{
//定义事件处理
public void HandlerEvent(string msg)
{
Console.WriteLine(msg);
}
}
class Program
{
public static void Main(string [] args)
{
Car car=new Car;
Carhandler handler=new Carhandler();
car.eventCar+=new Car.delegateCar(handler.HandlerEvert);
car.Stop();
}
}
}
在一个Win应用程序中,事件无处不在,比如单击窗体,单击任何窗体上的按钮或者控件。当你点击时,就会在Form1.cs文件里面生成相应的处理方法,即事件处理。在你点击的同时,在Form1.Designer.cs文件里的窗体设计器生成的代码的里面相应控件下为事件接受者订阅事件。你所做的就是在事件处理方法里写事件处理代码就可以了。