using System; using System.Collections.Generic; using System.Text; namespace 事件 { //定义委托,要注意委托名应以EventHandle结尾,参数应为object sender和IndexEventArgs e publicdelegatevoid MydelegateEventHandle(object sender,IndexEventArgs e); //定义IndexEventArgs类,应作为EventArgs的子类 publicclass IndexEventArgs : EventArgs //EventArgs是包含事件数据的类的基类 { int index; public IndexEventArgs(int i) { index = i; } publicint Index { get{ return index; } } } //定义功能类 publicclass A { publicevent MydelegateEventHandle MyEvent;//定义事件委托 publicvoid count() { for (int i =1; i <101; i++) { IndexEventArgs e =new IndexEventArgs(i); OnMyEvent(e);//每循环一次,执行一次事件 } } //定义protected类型的虚方法,方法名应为事件委托名前面加“On” protectedvirtualvoid OnMyEvent(IndexEventArgs e) { if (MyEvent !=null) { MyEvent(this, e); } } } }
主函数调用如下:
using System; using System.Collections.Generic; using System.Text; namespace 事件 { class Program { staticvoid Main(string[] args) { A a =new A(); a.MyEvent +=new MydelegateEventHandle(a_MyEvent)//关联事件 a.count(); } staticvoid a_MyEvent(object sender, IndexEventArgs e) { Console.WriteLine(e.Index); } } }