C# 事件小筆記

C# 事件小筆記

自從委派筆記做完後,就一直想補足Event這塊。

雖然說只要寫.NET就一定會碰到,而且微軟包裝的相當漂亮,即便是你不懂Delegate or event。

只要你會在視窗上面拉上一個按鈕,然後勇敢點兩下,一樣能夠寫得很開心。

(就像下面的code~~~)




 

如果再往Form1.Designer.cs檔案內追查的話,也可以發現如下code:




 

從this.button1.Click += 可以發現Click是個event,所以我們在往內追追追吧!!




 

由上面code來看,可以知道EventHandler是一個委派,再往下追可以發現~~



這樣實在很像福爾摩斯大偵探,一直給它追~追~追。

接下來我們可以實做自己的Event機制,如下面的code:

   1:  namespace EventTrain
   2:  {
   3:      class Program
   4:      {
   5:          static void Main(string[] args)
   6:          {
   7:              MyEvent myEvent = new MyEvent();
   8:              
   9:              //為事件掛載處理函式
  10:              myEvent.event1 += new MyEventHandler1(doSomething1);
  11:              myEvent.event2 += new MyEventHandler2(doSomething2);
  12:   
  13:              //觸發事件
  14:              myEvent.OnSomeEvent();
  15:   
  16:              Console.Read();
  17:          }
  18:   
  19:          public static void doSomething1(string eventName)
  20:          {
  21:              Console.WriteLine("{0} 被觸發做了一件事!",eventName);
  22:          }
  23:   
  24:          public static void doSomething2(string eventName)
  25:          {
  26:              Console.WriteLine("{0} 被觸發做了二件事!", eventName);
  27:          }
  28:      }
  29:   
  30:      delegate void MyEventHandler1(string eventName);
  31:      delegate void MyEventHandler2(string eventName);
  32:   
  33:      class MyEvent
  34:      {
  35:          public event MyEventHandler1 event1;
  36:          public event MyEventHandler2 event2;
  37:   
  38:          //以下這個method會觸發Event
  39:          public void OnSomeEvent()
  40:          {
  41:              if (event1 != null)
  42:              {
  43:                  event1("我是事件1");
  44:              }
  45:   
  46:              if (event2 != null)
  47:              {
  48:                  event2("我是事件2");
  49:              }
  50:          }
  51:      }
  52:  }

以上為大胖佛心來著Event筆記(^_______^)