首页 > 代码库 > C#语言进阶——5.C# 的事件

C#语言进阶——5.C# 的事件

1. C# 中事件在 WinForms 的使用情况

事件是用来干什么的,事件是为了通知我们的程序发生了一些事件,一些事情,他就能进行下一步的处理,一些操作。最常用的场景是一个图形化交互当中,点击按钮,输入文字之类的。

            this.button1.Click += new System.EventHandler(this.button1_Click);//一个按钮的事件 传入一个方法

2.C# 事件的语法 :事件是基于委托的

 1    class Program
 2     {
 3 
 4 
 5         static void Main(string[] args)
 6         {
 7             //第一次就设置一个值
 8             var e = new EventTest(5);
 9             e.SetValue(100);
10             //绑定委托
11             e.ChangeNum += new EventTest.NumManpulationHandler(EventTest.EventFired);
12             //再次触发
13             e.SetValue(200);
14             Console.ReadLine();
15         }
16     }
17     class EventTest
18     {
19         private int value;
20         public delegate void NumManpulationHandler();//声明委托
21         public event NumManpulationHandler ChangeNum;//声明一个事件
22 
23 
24         //写个构造函数
25         public EventTest(int n)
26         {
27             //在他初始化的时候 就要设一下他的值
28             SetValue(n);
29 
30         }
31 
32         /// <summary>
33         /// 静态委托
34         /// </summary>
35         public static void EventFired()
36         {
37             Console.WriteLine("事件触发啦");
38         }
39 
40         //先写几个方法
41         /// <summary>
42         /// 当数字变动的时候就会调用这个方法
43         /// </summary>
44         protected virtual void OnNumChange()
45         {
46             //看看委托有没有被绑定上去 如果有就去触发
47             if (ChangeNum != null)
48             {
49                 ChangeNum();
50             }
51             else
52             {
53                 Console.WriteLine("事件没触发");
54             }
55         }
56         /// <summary>
57         /// 什么样的操作会触发事件呢,当他设值的时候就会触发
58         /// </summary>
59         /// <param name="n"></param>
60         public void SetValue(int n)
61         {
62             //原来的值不相等就不触发
63             if (value != n)
64             {
65                 value =http://www.mamicode.com/ n;
66                 OnNumChange();
67             }
68         }
69     }

 

3.C# 事件的相关内容

提供了很大的灵活性,事件可以写在接口里面等等。

//微软比较推荐的绑定一个事件的委托的写法    返回 void 两个参数  
 public delegate void NumManpulationHandler(Object sender,EventArgs e);

系统自带的委托 EventHandler 如果我们想要在事件绑定一些委托的话最好绑定 EventHandler 

 

 

C#语言进阶——5.C# 的事件