//定义的委托
    public delegate void VerifyComIDHandle(string callerID, string ComID, int telChan); 
    public delegate void OnRingHandle(int telChan, string callerID, string ComId);      
    public delegate void ConnectErrorHandle(string ErrorMsg);                          
    public delegate void OutLineHangUpHandle(DateTime TimeHangUp);                      
    public delegate void ConectSucceedHandle();      
//定义的事件
        public event VerifyComIDHandle VerifyComID;     
        public event OnRingHandle OnRing;               
        public event ConnectErrorHandle ConnectError;   
        public event OutLineHangUpHandle OutLineHangUp; 
        public event ConectSucceedHandle ConnectSucceed; 
定义的事件中,在程序里面检查,发现     VerifyComID和  OutLineHangUp都为空,其处理都是一样的,为什么会有两个为空呢?                                     

解决方案 »

  1.   

    定义了事件, 没有人来订阅她, 就是空的了,new 你的对象后, 订阅一下 如:
      VerifyComID += .....
      

  2.   

    .....你应该用过form_load(object sender,systemevent e)这样的事件了吧。想以想,你在用这个事件之前做过什么??
    是不是form.load += new eventhandl(form_load)?
    += 你可以看成是给你的load事件实例化,并且指定一个函数。只不过 += 你需要注意,他不是 = 那样的只是指定一个,而是挂入一个事件链表。因此你的事件在你的类中调用之前,必须判断是否为空。
    比如 public event OnRingHandle OnRing;    
    if( OnRing != unll )
    OnRing();
      

  3.   


    dobzhansky同学,我这里是分两个模块,我是模块A,我要发起VerifyComID,让模块B来响应我这个VerifyComID,之前没说清楚,不好意思
      

  4.   

    对于事件
    public event VerifyComIDHandle VerifyComID;    在你的类内部写个激发的函数:protected virtual void OnVerifyComID(string callerID, string ComID, int telChan)
    {
      if (null != VerifyComID)
        VerifyComID(callerID, ComID, telChan);
    }对了, 你的事件参数最好自定义一个, 派生自 EventArgs, 那样规范一些public class VerifyComIDEventArgs : EventArgs
    {
      string _callerID;
      string _ComID;
      int _telChan
      // 只可内部构造
      internal VerifyComIDEventArgs(....)
      {
        ....
      }   // 属性实现
       public string CallerID {get;}
       public string ComID {get;}
       public int TelChan{get;}
    }
      

  5.   

    在类内部需要激发事件的地方调用函数OnVerifyComID
    就可以了