自定义控件学习笔记(5):事件委托列表的使用
2007-10-27 17:49
639 查看
对于多个事件采用事件委托列表的方法比重复写委托,效率更高,占用内存更少
[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!/>");
}
}
[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!/>");
}
}
相关文章推荐
- 精通C#学习笔记之事件(一)使用委托的弊端
- C#学习笔记--详解委托,事件与回调函数
- 学习笔记之---C#中的委托与事件
- 使用反射移除指定对象的未知的事件的调用委托列表辅助类
- tony的js学习笔记--事件委托
- Tolua使用笔记六:在lua中操作C#的委托事件与在lua中对Unity的GameObject的操作
- 【android控件学习笔记】使用Spinner实现下拉列表
- C#学习笔记之三:C#接口与事件委托
- 学习笔记之---C#中的委托与事件
- [学习笔记]c#中的委托、事件、Func、Predicate、Observer设计模式以及其他
- C#与.NET4 高级程序设计-----委托、事件 学习笔记
- Cordova学习笔记 事件的简单使用
- 学习笔记---再次理解事件和委托
- 【Java学习笔记】53:JTree的使用(新选中事件和结点双击事件)
- Python 2.7 学习笔记 列表的使用
- Mcad学习笔记之异步编程(AsyncCallback委托,IAsyncResult接口,BeginInvoke方法,EndInvoke方法的使用小总结)(转载)
- 《C#高级编程》学习笔记------C#中的委托和事件(续)
- 委托、事件学习笔记
- C#委托与事件学习笔记
- 委托与事件学习笔记1---什么是委托?