
事件就是调用一个方法自动触发一系列方法:
1.申明delegate
2.申明事件event
3.触发事件的方法
4.注册事件引发的方法,通过delegate
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6
7 namespace Event
8 {
9 class Program
10 {
11 static void Main(string[] args)
12 {
13 EventTest e = new EventTest(5);
14 e.SetValue(10);
15
16 //注册事件引发的方法委托
17 e.ChangeNum += new EventTest.NumManipulateChangeHandle(EventTest.EventFired);
18 e.SetValue(100);
19
20 I myI = new MyClass();
21 myI.MyEvent += new MyDelegate(MyPrivate);
22 myI.FiredWay();
23
24 Console.ReadLine();
25
26
27 }
28
29 private static void MyPrivate()
30 {
31 Console.WriteLine("My Event fired!");
32 }
33
34 public class EventTest
35 {
36 //属性
37 public int value;
38 //声明委托
39 public delegate void NumManipulateChangeHandle();
40 //声明事件
41 public event NumManipulateChangeHandle ChangeNum;
42 //构造函数
43 public EventTest(int n)
44 {
45 SetValue(n);
46 }
47 //委托的事件
48 public static void EventFired()
49 {
50 Console.WriteLine("Binded event fired!");
51 }
52 //触发事件的方法
53 protected virtual void OnNumChanged()
54 {
55 if (ChangeNum != null)
56 {
57 ChangeNum();
58 }
59 else
60 {
61 Console.WriteLine("Event fired!");
62 }
63 }
64 //调用触发事件的方法
65 public void SetValue(int n)
66 {
67 if (value != n)
68 {
69 value = n;
70 OnNumChanged();
71 }
72 }
73 }
74
75 public delegate void MyDelegate();
76
77 interface I
78 {
79 event MyDelegate MyEvent;
80
81 void FiredWay();
82
83 }
84
85 public class MyClass : I
86 {
87 public event MyDelegate MyEvent;
88
89 public void FiredWay()
90 {
91 if (MyEvent != null)
92 {
93 MyEvent();
94 }
95 }
96 }
97
98
99 }
100 } View Code
转载于:.html
本文发布于:2024-01-28 14:27:55,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064232818072.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
| 留言与评论(共有 0 条评论) |