事件有很多,比如说 鼠标的事件:MouserMove,MouserDown等。 键盘的事件:KeyUp,KeyDown,KeyPress。 有事件,就会有对事件进行处理的方法,而事件和处理方法之间是怎么联系起来的呢?委托就是他们中间的桥梁,事件发生时,委托会知道,然后将事件传递给处理方法,处理方法进行相应处理。 比如在WinForm中最常见的是按钮的Click事件,它是这样委托的:this.button1.Click += new System.EventHandler(this.button1_Click);按按钮后就会出发button1_Click方法进行处理。EventHandler就是系统类库里已经声明的一个委托。-------委托实例化,this.buttion1_click为方法名
EventHandler以及其它自定义的事件委托都是一类特殊的委托,他们有相同的形式: delegate void 事件委托名(object sender,EventArgs e); object用来传递事件的发生者,比如Button控件就是一个事件发生者;EventArgs用来传递事件的细节。 我们看下面的例子: using System; namespace 最简单的自定义事件 { /// /// 事件发送类 /// class Class1 { public delegate void UserRequest(object sender,EventArgs e); //定义委托 public event UserRequest OnUserRequest; //定义一个委托类型的事件 public void run() { while(true) { if(Console.ReadLine()=="a") {//事件监听 OnUserRequest(this,new EventArgs()); //产生事件 } } } } /// /// 事件接收类 /// class Class2 { static void Main(string[] args) { Class1 c1 = new Class1(); c1.OnUserRequest += new Class1.UserRequest(c1_OnUserRequest); //委托实例化后绑定到事件 c1.run(); } private static void c1_OnUserRequest(object sender, EventArgs e) {//事件处理方法 Console.WriteLine("/t你触发了事件!"); } } }