来源:www.cncfan.com | 2006-1-12 | (有2179人读过)
C#的事件机制是基于委托实现的。实现一个事件,要先定义一个委托类型 class1 { public delegate void mydelegate (myEventArgs e); public event mydelegate event1; } 然后我们可以使用+=和-=注册、移除事件 class1.event1 += new mydelegate(new myEventArgs()); 在class中引发事件时最好这样 class1 { public fireEvent() { if(event1 != null) event1(); } }
如果不想声明自己的委托类型的话,可以使用System.EventHandler的委托类型 public delegate void EventHandler(object sender, EventArgs e); 其中EventArgs转送附加参数。 可以实现自己的EventArgs类 class myEventArgs:EventArgs { } 类名最好以EventArgs 结尾,这是个默认规则 调用时如果不想使用参数可以传递 EventArgs.Empty
事件其实背后做了很多工作,自动生成一个委托实例、一个注册委托的add_XXX方法、一个注销委托的
Remove_XXX方法。事实上这两个方法可以自己定制。只要声明事件时使用以下语法: public event MyDelegate1 Event1 { add { } remove { } } 在其中实现自己的注册函数即可。看上去是不是很像属性的定义:)
|