难得有一片属于seyon的天

success.aspx?para1="要有决心"+para2="要努力"+para3="要有机会"
posts - 44, comments - 55, trackbacks - 6, articles - 14
  博客园 :: 首页 :: 新随笔 ::  :: 订阅 订阅 :: 管理
对于多个事件采用事件委托列表的方法比重复写委托,效率更高,占用内存更少
 [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!/>");
        }

    }

Feedback

#1楼    回复  引用    

2007-11-03 10:33 by caimh13 [未注册用户]
大哥,什么时候出、本书吧,,,附些实例,,我一定去买

#2楼    回复  引用  查看    

2008-07-09 17:05 by 大李      
大哥,实例可以编译。
1个button有两个click,而且会同时执行这两个click,好像没什么意义。

我现在是两个button,分别定义两个事件,不知道怎么可以调用前台的事件。
我能区分是那个button需要激发时间。

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  博客园首页

  新闻频道

  社区

  小组

  博问

  网摘

  闪存

  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-10-27 18:02 编辑过
成果网帮您增加网站收入


相关链接: