摘抄:
C#中使用事件需要的步骤: 1.创建一个委托 2.将创建的委托与特定事件关联(.Net类库中的很多事件都是已经定制好的,所以他们也就有相应的一个委托,在编写关联事件处理程序--也就是当有事件发生时我们要执行的方法的时候我们需要和这个委托有相同的签名) 3.编写事件处理程序 4.利用编写的事件处理程序生成一个委托实例 5.把这个委托实例添加到产生事件对象的事件列表中去,这个过程又叫订阅事件 C#中事件产生和实现的流程: 1.定义A为产生事件的实例,a为A产生的一个事件 2.定义B为接收事件的实例,b为处理事件的方法 3.A由于用户(程序编写者或程序使用者)或者系统产生一个a事件(例如点击一个Button,产生一个Click事件) 4.A通过事件列表中的委托对象将这个事件通知给B 5.B接到一个事件通知(实际是B.b利用委托来实现事件的接收) 6.调用B.b方法完成事件处理
为系统定义事件绑定回调函数
1 this.btnBack.Click += new System.EventHandler(this.btnBack_Click);
自定义事件并绑定回调函数
自定义事件
什么是自定义事件:具有 event 关键字的为一个事件。
自定义事件由谁来执行:event 需要一个 delegate 来执行
如何为自定义事件绑定回调函数:xxx.event += new delegate(FuncName)
如何触发一个事件:event(); 需要提供事件的委托者必要的参数
注:
event 的类必须是执行回调函数的委托者(类)
event 没有参数
event 的执行委托者必须与委托事件参数、签名必须相同
例:
无参数
1 this.EventTester += new EventDelegate(EventTestFunc); //绑定 2 EventTesters(); //触发 3 public delegate void EventDelegates(); //委托者 4 public event EventDelegates EventTesters; //事件 5 public void EventTestFuncs() //回调函数/委托事件 6 { 7 MessageBox.Show("无参数自定义事件"); 8 }
带有参数
1 public delegate void EventDelegate(object sender, EventArgs e); 2 public event EventDelegate EventTester; 3 public void EventTestFunc(object sender, EventArgs e) 4 { 5 MessageBox.Show("有参数自定义事件"); 6 }