C#事件(1)

事件就是调用一个方法自动触发一系列方法:

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
原文地址:https://www.cnblogs.com/yanmantianxia/p/5481906.html