■事件:事件是一种函数回调机制,它通过委托来实现函数回调。
使用事件之前,首先在需要上报的类中声明一个事件,通常包含两个步骤:
(1)定义一个委托类型(EventHandler)表示时间处理函数的类型
(2)在类中用关键字event声明一个EventHandler类型的事件,事件同样具有访问性,通常为public
delegate void MyEventHandler(Object sender,EventArgs e)
class EventClass{
public event MyEventHandler MyEvent;
}
■注册和注销事件
一个类的使用者需要处理类的事件,通常需要3个步骤:
(1)为要处理的事件增加处理函数
(2)将事件处理函数通过+=运算符注册到要处理的事件
(3)处理完成后,通过-=运算符注销不需要的事件处理函数
■
使用事件之前,首先在需要上报的类中声明一个事件,通常包含两个步骤:
(1)定义一个委托类型(EventHandler)表示时间处理函数的类型
(2)在类中用关键字event声明一个EventHandler类型的事件,事件同样具有访问性,通常为public
delegate void MyEventHandler(Object sender,EventArgs e)
class EventClass{
public event MyEventHandler MyEvent;
}
■注册和注销事件
一个类的使用者需要处理类的事件,通常需要3个步骤:
(1)为要处理的事件增加处理函数
(2)将事件处理函数通过+=运算符注册到要处理的事件
(3)处理完成后,通过-=运算符注销不需要的事件处理函数
■
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace EventDelegate
{
delegate void MyEventHandler(Object sender,EventArgs e);
class EventClass {
public event MyEventHandler MyEvent;
protected void OnMyEvent(EventArgs e) {
System.Console.WriteLine( " EventClass:Ready to fire a MyEvent " );
if ( this .MyEvent != null ) {
System.Console.WriteLine( " EventClass:fire a MyEvent " );
this .MyEvent( this , e);
}
}
public void FireEvent() {
this .OnMyEvent(EventArgs.Empty);
}
}
class Program
{
static void GetAEvent(object sender, EventArgs e) {
System.Console.WriteLine( " GetAEvent:Get a Event EventClass.MyEvent " );
}
static void Main(string[] args)
{
EventClass eventClass = new EventClass();
eventClass.MyEvent += new MyEventHandler(GetAEvent);
eventClass.FireEvent();
eventClass.MyEvent -= new MyEventHandler(GetAEvent);
eventClass.FireEvent();
System.Console.ReadLine();
}
}
}
运行结果:
EventClass:Ready to fire a MyEvent
EventClass:fire a MyEvent
GetAEvent:Get a Event EventClass.MyEvent
EventClass:Ready to fire a MyEvent
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace EventDelegate
{
delegate void MyEventHandler(Object sender,EventArgs e);
class EventClass {
public event MyEventHandler MyEvent;
protected void OnMyEvent(EventArgs e) {
System.Console.WriteLine( " EventClass:Ready to fire a MyEvent " );
if ( this .MyEvent != null ) {
System.Console.WriteLine( " EventClass:fire a MyEvent " );
this .MyEvent( this , e);
}
}
public void FireEvent() {
this .OnMyEvent(EventArgs.Empty);
}
}
class Program
{
static void GetAEvent(object sender, EventArgs e) {
System.Console.WriteLine( " GetAEvent:Get a Event EventClass.MyEvent " );
}
static void Main(string[] args)
{
EventClass eventClass = new EventClass();
eventClass.MyEvent += new MyEventHandler(GetAEvent);
eventClass.FireEvent();
eventClass.MyEvent -= new MyEventHandler(GetAEvent);
eventClass.FireEvent();
System.Console.ReadLine();
}
}
}
运行结果:
EventClass:Ready to fire a MyEvent
EventClass:fire a MyEvent
GetAEvent:Get a Event EventClass.MyEvent
EventClass:Ready to fire a MyEvent