C#中自定义事件的注意事项


一个类中定义如下事件:




[csharp] 
  1. public delegate void AfterDrawPointEvent(object sender,double x,double y);  

[csharp]
  1. private AfterDrawPointEvent pAfterDrawPointEvent;  
  2. /// <summary>   
  3. /// 插入要素事件   
  4. /// </summary>   
  5. public event AfterDrawPointEvent AfterDrawpoint  
  6. {  
  7.     add  
  8.     {  
  9.         pAfterDrawPointEvent += value;  
  10.     }  
  11.     remove  
  12.     {  
  13.         pAfterDrawPointEvent -= value;  
  14.     }  
  15. }  
  16. private void RaiseAfterDrawPointEvent(object sender, double x,double y)  
  17. {  
  18.     if (pAfterDrawPointEvent != null)  
  19.     {  
  20.         pAfterDrawPointEvent(sender,x,y);  
  21.     }  
  22.   
  23. }  
然后定义实现的响应方法,注意要先去掉旧的响应方法,否则可能出现部分变量的状态无法更新。代码如下:

[csharp]
  1. m_pDrawCustomPoint.AfterDrawpoint-= new DrawCustomPoint.AfterDrawPointEvent(m_pDrawCustomPoint_AfterDrawpoint);  
  2. m_pDrawCustomPoint.AfterDrawpoint += new DrawCustomPoint.AfterDrawPointEvent(m_pDrawCustomPoint_AfterDrawpoint);  

相关内容