隨筆 - 78  文章 - 25  trackbacks - 0
          <2009年10月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿

          隨筆分類(75)

          隨筆檔案(78)

          相冊

          實用Links

          我的Links

          搜索

          •  

          積分與排名

          • 積分 - 114363
          • 排名 - 515

          最新評論

          閱讀排行榜

          評論排行榜

          ■事件:事件是一種函數回調機制,它通過委托來實現函數回調。
          使用事件之前,首先在需要上報的類中聲明一個事件,通常包含兩個步驟:
          (1)定義一個委托類型(EventHandler)表示時間處理函數的類型
          (2)在類中用關鍵字event聲明一個EventHandler類型的事件,事件同樣具有訪問性,通常為public

          delegate void MyEventHandler(Object sender,EventArgs e)
          class EventClass{
              public event MyEventHandler MyEvent;
          }
          ■注冊和注銷事件
          一個類的使用者需要處理類的事件,通常需要3個步驟:
          (1)為要處理的事件增加處理函數
          (2)將事件處理函數通過+=運算符注冊到要處理的事件
          (3)處理完成后,通過-=運算符注銷不需要的事件處理函數


          using System;
          using System.Collections.Generic;
          using System.Linq;
          using System.Text;

          namespace EventDelegate
          {
              delegate 
          void MyEventHandler(Object sender,EventArgs e);
              
          class EventClass {
                  
          public event MyEventHandler MyEvent;
                  
          protected void OnMyEvent(EventArgs e) {
                      System.Console.WriteLine(
          "EventClass:Ready to fire a MyEvent");
                      
          if (this.MyEvent != null) {
                          System.Console.WriteLine(
          "EventClass:fire a MyEvent");
                          
          this.MyEvent(this, e);
                      }
                  }
                  
          public void FireEvent() {
                      
          this.OnMyEvent(EventArgs.Empty);
                  }
              }
              
          class Program
              {
                  
          static void GetAEvent(object sender, EventArgs e) {
                      System.Console.WriteLine(
          "GetAEvent:Get a Event EventClass.MyEvent");
                  }
                  
          static void Main(string[] args)
                  {
                      EventClass eventClass 
          = new EventClass();
                      eventClass.MyEvent 
          += new MyEventHandler(GetAEvent);
                      eventClass.FireEvent();
                      eventClass.MyEvent 
          -= new MyEventHandler(GetAEvent);
                      eventClass.FireEvent();
                      System.Console.ReadLine();
                  }
              }
          }

          運行結果:
          EventClass:Ready to fire a MyEvent
          EventClass:fire a MyEvent
          GetAEvent:Get a Event EventClass.MyEvent
          EventClass:Ready to fire a MyEvent



          posted on 2009-10-26 16:31 期待明天 閱讀(507) 評論(0)  編輯  收藏 所屬分類: CSharp
          主站蜘蛛池模板: 虎林市| 两当县| 鄂温| 论坛| 九龙城区| 社旗县| 昂仁县| 梨树县| 兴业县| 阆中市| 临漳县| 融水| 铜山县| 宁远县| 诸城市| 胶南市| 车险| 苍溪县| 兴国县| 南汇区| 正定县| 巴塘县| 赣州市| 民和| 宕昌县| 威远县| 讷河市| 格尔木市| 永兴县| 临夏县| 桐乡市| 延川县| 阳高县| 奇台县| 克什克腾旗| 富宁县| 丁青县| 中宁县| 贵德县| 贡嘎县| 东乡族自治县|