标题可能没写清楚。比如说我看见很多人在写一个底层控件时候。如有点鼠标点击事情需要写一点代码。
protected override void OnMouseClick(MouseEventArgs e)
为什么不使用微软库类里本来就有的delegate?如
this.MouseClick += new MouseEventHandler(控件名_MouseClick);
protected void 控件名_MouseClick(object sender,MouseEventArgs e)
{
}
用第二种方法也可以啊。为什么都用第一种,有什么特殊含意吗?

解决方案 »

  1.   

    第二种不是控件里写的 是其他地方写好由控件回调的。 明白?
    重写MouseClick说明控件本身的OnClick不能满足需求,Button的OnClick只是判断eventhander是否为空,然后执行回调,没有其他任务。而自定义控件需要做点别的
      

  2.   

    override 重写了继承的方法...不执行继承类的方法了this.MouseClick += new MouseEventHandler(控件名_MouseClick);
    这样没重写方法..只是等待继承的某个方法的调用而已.
      

  3.   


    重写时 override ,可以重新定义控制逻辑,
    用事件时,只能收到一个通知如 
    protected override void OnMouseClick(MouseEventArgs e)
    {
     if(xxx){ do xxx;}
     if(yyy){base.OnMouseClick(e);}
    }
    这样,如果你不调用base.OnMouseClick,那么事件也不会产生,你 
    this.MouseClick += new MouseEventHandler(控件名_MouseClick);
    就没有执行了。