zoukankan      html  css  js  c++  java
  • 事件委托在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上看看吧.

  • 相关阅读:
    asp.net禁用頁面緩存
    SQL排序方法,EXEC法和CASE WHEN法
    Web Service 基础连接已经关闭的解决方案
    用CSS写TABLE边框
    SQL2000分页存储过程,针对表,2005有自带的row_number
    GridView RowCommand事件中取得當前行
    取得Repeter中數據項,如TR
    FireFox自动撑高层解决方案
    PostgreSql 添加语言语法
    CSS设置图片居中
  • 原文地址:https://www.cnblogs.com/king_astar/p/34162.html
Copyright © 2011-2022 走看看