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筆記(^_______^)