首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

-为什么这个委托和事件总是异常,

2011-12-21 
-----为什么这个委托和事件总是错误,在线等----假设我的页面有三个buttonpublicdelegatevoidHandleraa(obj

-----为什么这个委托和事件总是错误,在线等----
假设我的页面有三个button

public   delegate   void     Handleraa(object   sender,   System.EventArgs   e);

public       event       Handleraa       myevent;  
private   void   Page_Load(object   sender,   System.EventArgs   e)
{

this.Button2.Click   +=   new   System.EventHandler(this.Button1_Click);//这行把Button1_Click给Button2.Click就没有错

myevent=new     Handleraa(this.Button1_Click);
this.Button3.Click   +=myevent;     //错误,提示无法将类型“Handleraa”隐式转换为“System.EventHandler”
}

public   void   Button1_Click(object   sender,   System.EventArgs   e)
{
Response.Write( "fsdfsdf ");
}

即使我强制转换this.Button3.Click   +=(System.EventHandler)myevent也还是一样

为什么   ???!!!

[解决办法]
对于自定义事件,最好使用EventHandler或EventHandler <T> ,而不是自己来定义一个委托.比如:

public event EventHandler someEvent;
[解决办法]
使用EventHandler相当于是按一个约定或者说标准来做,使用自定义的委托可以定义事件,但这样失去了标准.
[解决办法]
class Button
{
public event EventHandler Click;
}

//是EventHandler委托的事件
你定义的Handleraa貌似 返回值和参数列表都一致 但确是两个不同的东西

就比方有对双胞胎 长得一样 而且都叫张三 你却不能把他们当作一个人把
[解决办法]
Button3.Click 的委托类型为EventHandler

热点排行