在C#中创建和使用事件的步骤
1. 为事件创建一个委托类型
所有事件是通过委托来激活的,其返回值类型一般为void型。为事件创建一个委托类型的语法格式如下:
delegate void 委托类型名([触发事件的对象名,事件参数]);
例如,以下语句创建一个委托类型mydelegate,其委托的事件处理方法返回类型为void,不带任何参数:
public delegate void mydelegate();
2. 创建事件处理的方法
当事件触发时要调用事件处理方法,需设计相应的事件处理方法,可以将它放在单独的类中,也可以放在触发事件的类中。
例如,以下设计一个包含事件处理方法的单独类
class MyEventHander
{ public void OnHandler1()
{
Console.WriteLine("调用OnHandler1方法");
}
}
3. 声明事件
事件是类成员,以关键字event声明,其一般语法格式如下:
[修饰符] event 委托类型名 事件名;
其中,“修饰符”指出类的用户访问事件的方式,可以为public 、private、protected、internal、protectedinternal、static或virtual等。
一般在声明事件的类中包含触发事件的方法。例如,以下MyEvent类包含事件声明和触发该事件的方法:
MyEvent //事件类
{ public event mydelegate1 Event1; //声明事件
public void FireEvent1() //调用这个方法来触发事件Event1
{ if(Event1 != null)
{
Event1(); //Event1事件发生
}
}
}
4. 通过委托对象来调用被包含的方法
向类事件(列表)中添加事件处理方法中的一个委托,这个过程称为订阅事件,这个过程通常是在主程序中进行的,首先必须声明一个包含事件的类的对象,然后将事件处理方法和该对象关联起来,其格式如下:
事件类对象名.事件名+=new 委托类型名(事件处理方法);
其中,还可以使用“-=”、“+”、“-”等运算符添加或删除事件处理方法。最后调用触发事件的方法便可触发事件。
例如,以下语句就是触发前面创建的事件Event1,并在屏幕上显示“调用OnHandler1方法”:
MyEvent b = new MyEvent();
MyEventHander a = new MyEventHander();
b.Event1 += new mydelegate1(a.OnHandler1);
//把方法OnHandler1添加到事件列表中
b.FireEvent1(); //调用触发事件的方法
点击加载更多评论>>