两个例子均用现实的例子来解释委托事件的处理过程。很好!  
   
      第一个例子  
   
  public   delegate   void   EatEventHandler(object   sender,   EatEventArgs   e);    
  这个的定义也可以不要这样.可以直接就定义一个参数  
  public   delegate   void   EatEventHandler(string   e);   但然用的时候的参数要相对应好哦 

 
   
  using   System;    
   
  namespace   nsEventSample    
  {    
          ///   <summary>    
          ///   类EatEventArgs   必须继承自类EventArgs,用来引发事件时封装数据    
          ///   </summary>    
          public   class   EatEventArgs   :   EventArgs    
          {    
                  public   String   restrauntName;           //饭店名称    
                  public   decimal   moneyOut;                         //准备消费金额    
          }    
   
          ///   <summary>    
          ///   这个委托用来说明处理吃饭事件的方法的方法头(模式)    
          ///   </summary>    
          public   delegate   void   EatEventHandler(object   sender,   EatEventArgs   e); 

  
   
          ///   <summary>    
          ///   引发吃饭事件(EateEvent)的类Master(主人),这个类必须    
          ///   1.声明一个名为EatEvent的事件:   public   event   EatEventHandler  

EatEvent;    
          ///   2.通过一个名为OnEatEvent的方法来引发吃饭事件,给那些处理此事件的方法传数据

;    
          ///   3.说明在某种情形下引发事件呢?在饿的时候。用方法Hungrg来模拟。    
          ///   </summary>    
          public   class   Master    
          {    
                  //声明事件    
                  public   event   EatEventHandler   EatEvent;    
   
                  //引发事件的方法    
                  public   void   OnEatEvent(EatEventArgs   e)    
                  {    
                          if   (EatEvent   !=   null)    
                          {    
                                  EatEvent(this,   e);    
                          }    
                  }    
   
                  //当主人饿的时候,他会指定吃饭地点和消费金额。    
                  public   void   Hungry(String     restrauntName,   decimal   moneyOut)   

 
                  {    
                          EatEventArgs   e   =   new   EatEventArgs();    
                          e.restrauntName   =   restrauntName;    
                          e.moneyOut   =   moneyOut;    
   
                          Console.WriteLine("主人说:");    
                          Console.WriteLine("我饿了,要去{0}吃饭,消费{1}元",  

e.restrauntName,   e.moneyOut);    
   
                          //引发事件    
                          OnEatEvent(e);    
                  }    
          }    
   
          ///   <summary>    
          ///   类Servant(仆人)有一个方法ArrangeFood(安排食物)来处理主人的吃饭事件    
          ///   </summary>    
          public   class   Servant    
          {    
                  public   void   ArrangeFood(object   sender,   EatEventArgs   e)    
                  {    
                          Console.WriteLine();    
                          Console.WriteLine("仆人说:");    
                          Console.WriteLine("我的主人,   您的命令是   :   ");    
                          Console.WriteLine("吃饭地点   --   {0}",   e.restrauntName);    
                          Console.WriteLine("准备消费   --   {0}元   ",   e.moneyOut);    
                          Console.WriteLine("好的,正给您安排。。。。。。。。");    
                          Console.WriteLine("主人,您的食物在这儿,请慢用");    
                  }    
          }    
   
          ///   <summary>    
          ///   类God安排qinshihuang(秦始皇)的仆人是lisi(李斯),并让李斯的ArrangeFood  

 
          ///   方法来处理qinshihuang的吃饭事件:qinshihuang.EatEvent   +=   new  

EatEventHandler(lishi.ArrangeFood);    
          ///   </summary>    
          public   class   God    
          {    
                  public   static   void   Main()    
                  {    
                          Master     qinshihuang   =   new   Master();    
                          Servant   lishi   =   new   Servant();    
   
                          qinshihuang.EatEvent   +=   new   EatEventHandler

(lishi.ArrangeFood);    
                             
                          //秦始皇饿了,想去希尔顿大酒店,消费5000元    
                          qinshihuang.Hungry("希尔顿大酒店",   5000.0m);    
                  }    
          }    
  }    
     
   
  第二个例子来源于:  
  http://community.csdn.net/Expert/topic/2651/2651579.xml?temp=.7183191  
   
  比如说一个公司(场景),你是老板,手下有两个员工,小王和小张。你命令小王注意小张,在开发

软件工作的时候如果上网打游戏,你就记录下来,从小张工资里扣100元钱。这个实际上就是现实中的委

托。  
   
  现在给出一个代码,C#控制台程序,编译运行通过  
  using   System;  
   
  namespace   CSharpConsole  
  {  
    public   class   场景  
    {  
      [STAThread]  
      public   static   void   Main(string[]   args)  
      {  
        Console.WriteLine("场景开始了....");  
        //   生成小王  
        小王   w   =   new   小王();  
        //   生成小账  
        小张   z   =   new   小张();  
   
        //   指定监视  
        z.PlayGame   +=   new   PlayGameHandler(w.扣钱);  
         
        //   开始玩游戏  
        z.玩游戏();  
   
        Console.WriteLine("场景结束...");  
        Console.ReadLine();  
      }  
    }  
   
   
    //   负责扣钱的人  
    public   class   小王  
    {  
      public   小王()  
      {  
        Console.WriteLine("生成小王...");  
      }  
   
      public   void   扣钱(object   sender,EventArgs   e)  
      {  
        Console.WriteLine("小王:好小子,上班时间胆敢玩游戏...");  
        Console.WriteLine("小王:看看你小子有多少钱...");  
        小张   f   =   (小张)sender;  
        Console.WriteLine("小张的钱:   "   +   f.钱.ToString());  
        Console.WriteLine("开始扣钱......");  
        System.Threading.Thread.Sleep(500);  
        f.钱   =   f.钱   -   500;  
        Console.WriteLine("扣完了....现在小张还剩下:"   +   f.钱.ToString());  
      }  
    }  
   
    //   如果玩游戏,则引发事件  
    public   class   小张  
    {  
      //   先定义一个事件,这个事件表示“小张”在玩游戏。  
      public   event   PlayGameHandler   PlayGame;  
      //   保存小张钱的变量  
      private   int   m_Money;  
   
      public   小张()  
      {  
        Console.WriteLine("生成小张....");  
        m_Money   =   1000;   //   构造函数,初始化小张的钱。  
      }  
   
      public   int   钱   //   此属性可以操作小张的钱。  
      {  
        get  
        {  
          return   m_Money;  
        }  
        set  
        {  
          m_Money   =   value;  
        }  
      }  
   
      public   void   玩游戏()  
      {  
        Console.WriteLine("小张开始玩游戏了.....");  
        Console.WriteLine("小张:CS好玩,哈哈哈!   我玩.....");  
        System.Threading.Thread.Sleep(500);  
        System.EventArgs   e   =   new   EventArgs();  
        OnPlayGame(e);  
      }  
   
      protected   virtual   void   OnPlayGame(EventArgs   e)  
      {  
        if(PlayGame   !=   null)  
        {  
          PlayGame(this,e);  
        }  
      }  
    }  
   
  //   定义委托处理程序  
    public   delegate   void   PlayGameHandler(object   sender,System.EventArgs   e);  
  }