首先 你这个问题出现在事件只能在它声明的类中调用,要想在派生类中调用基类的事件,要在基类中为事件创建方法!- public class BaseBusiness
- {
- // 声明事件委托
- public delegate void ProgressEventHandler(int progress,string msg);
- //声明事件
- public event ProgressEventHandler ProgressEvent;
- //为事件声明方法
- public void OnProgressEvent(int p, string m)
- {
- }
- }
- //派生类:
- public class MyBusiness :BaseBusiness
- {
- public MyBusiness()
- {
- this.OnProgressEvent(30, "Testing....");
- }
- }
复制代码 当然你的派生类想要有自己的事件 你可以将父类的事件方法声明为virtual的,访问修饰符最好是遗传保护的,用protected,然后在派生类中重写就可以了!
对了 我这段代码还没有写全,一般在调用事件的时候,你需要判断一下,事件是否注册了!就是在事件的方法里面判断一下
protected virtual void OnProgressEvent(int p, string m)
{
if (ProgressEvent != null) //判断事件是否已经注册了
{
}
} |