『7x24小时有问必答』
1 事件的概念
事件——首先我们来理解下这个通用概念,比如闹钟——响了;手机——发布了;火箭——发射了;这些都是日常生活中的事件。而在C,事件的概念与这个有相似也有不同,一般事件都是作为类的一个成员。对的,它不神秘,而是同属性、方法,字段一样都是一个类的成员而已;它用户通知它的事件订阅者(订阅说白了就是建立绑定关系,就像你订了人民日报,人民日发报社每次发新刊的时候才可能会送到你手上一样),而订阅者收到了通知一般会做出自己的处理,这个就是事件处理器。

---

2 事件的5个组成部分
C的事件也是一项非常关键的技术,必须要深刻的理解,本质上是基于委托的;
事件模型的总结为五个组成部分:
1.事件的拥有者—— event source,对象;
2.事件的成员——event,成员;
3.事件的响应者——event subscriber,对象;
4.事件处理器——event handler,方法成员——本质上是一个回调方法;
5.事件订阅——把事件处理器和事件关联在一起,本质上是一种以委托类型为基础的“约定”;

---

3 举两个事件的例子
下面来简单举两个个例子感受一下事件:
使用VS自带的Timer的Elapsed事件来关联2个自定义的对象;
另一个例子是使用vs自带的按钮事件;
示例1:
这是一个控制台应用程序。
使用VS自带的Timer类的Elapsed事件来关联2个自定义的对象;
  1  using  System;  2  using  System.Timers;  3    4  namespace  SimpleEventTest  5  {  6        class  Program  7        {  8              static  void  Main(string[] args)  9             {10                    Timer timer =  new  Timer();//实例化一个timer11                    Boy boy =  new  Boy();//实例化一个boy12                    Girl girl =  new  Girl();//实例化一个girl13                    timer.Elapsed += boy.Act;//关联事件14                    timer.Elapsed += girl.Act;15                    timer.Interval =  1000;16                    timer.Start();//运行timer,一旦满足条件自动触发被关联的方法;            17                    Console.ReadLine();18              }19        }20        class  Boy21        {22              private  int  count =  0;23              internal  void  Act(object sender, ElapsedEventArgs e)24             {25                    count++;26                    Console.WriteLine("Boy:Jump>>>"+count);27              }28        }29        class  Girl30        {31              private  int  count =  0;32              internal  void  Act(object sender, ElapsedEventArgs e)33             {34                    count++;35                    Console.WriteLine("Girl:Jump>>>"  + count);36              }37        }38  }
运行的效果:
1.png
值得注意的一些技巧:
1.用来相应事件的方法命名最好取名有意义:比如上面的Action();
2.当我们新建一个空的Boy类时,直接先写实例boy的boy.Action,会提示红色波浪线;
2.png
3.png
4.png
  自动生成Act方法,且符合事件的签名;
5.png
示例2:这是一Windows窗体应用程序。
现在Form1上创建一个button1,一个label1,共2个控件。然后双击button1,此时VS会自动帮我们生产一个按钮事件,在事件代码下我们写上:
6.png
7.png

---

4 事件的思维导图
最后分享两幅事件的思维导图:
8.png
9.png

---

5 动手练一练
请使用目前所学习的主要知识委托与事件完成如下项目的编程;
模拟一个主从对答机,打开是一个Main窗口,然后从Main窗口可以创建多个子窗口;接下来,主窗口和子窗口之间进行信息发送,而主窗口可以实现广播所有子窗口;
参考效果如下:
10.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码