事件委托在C#的实现

为什么要事件委托?什么是事件委托?
对象中触发了某个事件,但是,这个对象却并不处理这个事件(原因可能是这个对象并不关心这个事件等),而交由其他对象来进行处理。
这个就叫事件委托。
举例:
例如一个搜索页面,有两个用户控件,一个用于搜索定义,一个用于详细信息的显示。
在asp.net中的利用事件委托的处理过程是这样的:
事件触发在搜索界面,有搜索界面定义这个事件的委托,传递参数与事件给页面载体(page container)
页面载体得到参数并实现事件触发后的方法,处理完毕,再将参数传递给显示详细页面的用户控件处理。
//=================================================
//rock jing  2004-8-17

#region 委托事件,交给页面级别处理
  public class SearchArgs :System.EventArgs
  {
   private readonly DataTable dt;
   public SearchArgs(DataTable dt)
   {
    this.dt = dt;
   }
   
  }
  //定义回调方法原型
  public delegate void SearchEventHandler(Object sender, SearchArgs args);
  //指定事件委托
  public event SearchEventHandler SearchRequirement;
  //触发事件方法
  protected virtual void OnMsg(SearchArgs e)
  {
   if(SearchRequirement!=null)
    SearchRequirement(this,e);
  }
  #endregion


updated on 2007-11-15
看大家的评论好像对我这篇幼稚文章很是不满.
早期写的是有不足.
其实委托的概念在MSDN里面解释的很清楚,真的很佩服微软制作学习资料的人.
我这里只是简单的介绍一下,如何定义委托delegate, 如何用事件模型event实现.
委托很有点像以前C里面的回调函数,如果有这个概念,理解应该不难.
这里我也不想转贴MSDN上面概念,还请需要深入的访客直接到MSDN上看看吧.

原文地址:https://www.cnblogs.com/king_astar/p/34162.html