C#语言进阶——5.C# 的事件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 = n; 66 OnNumChange(); 67 } 68 } 69 }
3.C# 事件的相关内容
提供了很大的灵活性,事件可以写在接口里面等等。
//微软比较推荐的绑定一个事件的委托的写法 返回 void 两个参数 public delegate void NumManpulationHandler(Object sender,EventArgs e);
系统自带的委托 EventHandler 如果我们想要在事件绑定一些委托的话最好绑定 EventHandler
以上是关于C#语言进阶——5.C# 的事件的主要内容,如果未能解决你的问题,请参考以下文章
我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段
我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段