对于多个事件采用事件委托列表的方法比重复写委托,效率更高,占用内存更少
[DefaultEvent("dbClick")]
[ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")]
//继承了IPostBackEventHandler接口,该接口只有一个方法RaisePostBackEvent(触发Post事件)
public class WebCustomControl1 : WebControl,IPostBackEventHandler
{
//创建一个事件对象,向事件委托列表中添加
private static readonly object Eventclick = new object();
private static readonly object Eventclick2 = new object();
//向委托列表添加事件委托,列表类似hashtable成对键值
[Description("事件属性结构"), Category("Action")]
public event EventHandler ccClick
{
add
{ Events.AddHandler(Eventclick, value); }
remove
{ Events.RemoveHandler(Eventclick, value); }
}
[Description("事件属性结构"), Category("Action")]
public event EventHandler ddClick
{
add
{ Events.AddHandler(Eventclick2, value); }
remove
{ Events.RemoveHandler(Eventclick2, value); }
}
//事件处理过程(事件内容)
protected virtual void dbClick(EventArgs e)
{
//从列表中取出委托,由于装箱的时候是object,所以拆箱的时候要转换类型
EventHandler clickHandler = (EventHandler)Events[Eventclick];
if (clickHandler != null)
{
clickHandler(this, e);
}
}
//事件处理过程(事件内容)
protected virtual void dbClick2(EventArgs e)
{
//从列表中取出委托,由于装箱的时候是object,所以拆箱的时候要转换类型
EventHandler clickHandler = (EventHandler)Events[Eventclick2];
if (clickHandler != null)
{
clickHandler(this, e);
}
}
public void RaisePostBackEvent(string eventArgument)
{
dbClick(EventArgs.Empty);
dbClick2(EventArgs.Empty);
}
protected override void RenderContents(HtmlTextWriter output)
{
output.Write("<input type=submit name="+this.UniqueID+" value=click me!/>");
}
}
[ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")]
//继承了IPostBackEventHandler接口,该接口只有一个方法RaisePostBackEvent(触发Post事件)
public class WebCustomControl1 : WebControl,IPostBackEventHandler
{
//创建一个事件对象,向事件委托列表中添加
private static readonly object Eventclick = new object();
private static readonly object Eventclick2 = new object();
//向委托列表添加事件委托,列表类似hashtable成对键值
[Description("事件属性结构"), Category("Action")]
public event EventHandler ccClick
{
add
{ Events.AddHandler(Eventclick, value); }
remove
{ Events.RemoveHandler(Eventclick, value); }
}
[Description("事件属性结构"), Category("Action")]
public event EventHandler ddClick
{
add
{ Events.AddHandler(Eventclick2, value); }
remove
{ Events.RemoveHandler(Eventclick2, value); }
}
//事件处理过程(事件内容)
protected virtual void dbClick(EventArgs e)
{
//从列表中取出委托,由于装箱的时候是object,所以拆箱的时候要转换类型
EventHandler clickHandler = (EventHandler)Events[Eventclick];
if (clickHandler != null)
{
clickHandler(this, e);
}
}
//事件处理过程(事件内容)
protected virtual void dbClick2(EventArgs e)
{
//从列表中取出委托,由于装箱的时候是object,所以拆箱的时候要转换类型
EventHandler clickHandler = (EventHandler)Events[Eventclick2];
if (clickHandler != null)
{
clickHandler(this, e);
}
}
public void RaisePostBackEvent(string eventArgument)
{
dbClick(EventArgs.Empty);
dbClick2(EventArgs.Empty);
}
protected override void RenderContents(HtmlTextWriter output)
{
output.Write("<input type=submit name="+this.UniqueID+" value=click me!/>");
}
}