注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

一车,一房,一个温暖家

10万左右的车,80平方的房子,这是我奋斗的暖暖的家

 
 
 

日志

 
 

引用 二、C#事件。Event   

2015-06-20 15:13:36|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
本文转载自無可諒解《二、C#事件。Event》

二、C#事件。Event

事件实质上是一个委托实例,是委托的一种特殊形式。

sender(触发事件的对象)和receiver(捕获事件并作出响应的对象)之间使用委托作为媒介,在发布事件的类中定义用委托声明的事件,在事件接收方(用户类)中定义响应事件的事件处理方法;采用“发布/订阅”模式,发送方类发布一组事件供其他类订阅,当发布类产生事件时,所有订阅对象都会得到通知。

事件的声明:<access modifier> event <delegate type> EventName

为事件使用的委托类型进行声明时有更严格的规定:

l         事件的委托类型应采用两个参数;

l         两个参数分别是:指示事件源的“对象源”参数和封装事件的其他任何相关信息的“e”参数;

l         e”参数的类型应为EventArgs 类或派生自 EventArgs 类。

事件例子:

//自定义事件类

       public class PageBorwseButtonClickEventArgs : EventArgs

       {

              

              private int nPageIndex;   

              private int nPageSize;     

              

              public int PageIndex

              {

                     get

                     {

                            return this.nPageIndex;

                     }

              }

              

              public int PageSize

              {

                     get

                     {

                            return this.nPageSize;

                     }

              }

                            

              public PageBorwseButtonClickEventArgs(int pageIndex,int pageSize ) : base()

              {

                     this.nPageIndex = pageIndex;

                     this.nPageSize = pageSize;

              }

       }

       #endregion

       //自定义委托

       public delegate void PageBrowseEventHandler(object sender, PageBorwseButtonClickEventArgs e );

              

       public class PageBrowse : System.Web.UI.WebControls.WebControl, IPostBackEventHandler

       {

              

              private static readonly object EventPageBrowseClick = new object();

              

              // 事件绑定到委托

              public event PageBrowseEventHandler PageBrowseClick

              {

                     add

                     {

                            Events.AddHandler(EventPageBrowseClick, value );

                     }

                     remove

                     {

                            Events.RemoveHandler(EventPageBrowseClick, value );

                     }

              }

              

              protected void OnPageBrowseClick(PageBorwseButtonClickEventArgs e )

              {

                     PageBrowseEventHandler PageBrowseClick = (PageBrowseEventHandler)Events[EventPageBrowseClick];

                     if(PageBrowseClick != null )

                     {

                            PageBrowseClick(this, e );

                     }

              }

              

              public void RaisePostBackEvent(string eventArgument)

              {

                     PageBorwseButtonClickEventArgs e = new PageBorwseButtonClickEventArgs(nNowPageIndex, nNowPageSize );

                     //引发事件

                     this.OnPageBrowseClick(e );

              }

       }

  评论这张
 
阅读(3)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018