事件理解及初识
2015-04-21 11:40
211 查看
类或对象可以通过事件向其他类或对象通知发生的相关事情
发行者确定何时引发事件,订户确定执行何种操作来响应该事件。
C#中的事件处理实际上是一种具有特殊签名的delegate
假设一个场景 :老师登记分数后,学生马上接收到分数
发布者首先要写的代码
1、定义一个委托和事件,写一个方法,当这个方法调用时触发事件通知订阅者
2、先添加一个订阅者,后调用发布者中能触发事件的方法
3、在订阅者里处理,当事件发生时,如何处理
发行者确定何时引发事件,订户确定执行何种操作来响应该事件。
C#中的事件处理实际上是一种具有特殊签名的delegate
假设一个场景 :老师登记分数后,学生马上接收到分数
发布者首先要写的代码
1、定义一个委托和事件,写一个方法,当这个方法调用时触发事件通知订阅者
public class Teacher { public delegate void TellScoreEventHandler(object sender, ScoreEventArgs e); public event TellScoreEventHandler tellScoreEvent; /// <summary> /// 通知订阅者事件发生 /// </summary> /// <param name="e"></param> public void OnTellScore(ScoreEventArgs e) { if (tellScoreEvent != null) tellScoreEvent(this, e); } /// <summary> /// 调用方法时,触发事件 /// </summary> /// <param name="name"></param> /// <param name="score"></param> public void TellStudentSocre(string name,int score) { ScoreEventArgs scoreArgs = new ScoreEventArgs(name, score); OnTellScore(scoreArgs); } } /// <summary> /// 自定义事件数据的类 /// </summary> public class ScoreEventArgs : EventArgs { public int Score { get; set; } public string Name { get; set; } public ScoreEventArgs(string name,int score) { this.Name = name; this.Score = score; } }
2、先添加一个订阅者,后调用发布者中能触发事件的方法
Student stu = new Student(); Teacher teacher = new Teacher(); teacher.tellScoreEvent += new Teacher.TellScoreEventHandler(stu.teacher_tellScoreEvent); teacher.TellStudentSocre("奋斗的QB", 100);
3、在订阅者里处理,当事件发生时,如何处理
public class Student { //当事件发生后,如何处理 public void teacher_tellScoreEvent(object sender, ScoreEventArgs e) { MessageBox.Show(e.Name + "考了" + e.Score.ToString()); } }
相关文章推荐
- 深入理解.net的事件与委托机制
- 深入理解Android事件处理(二)
- C# 委托与事件的一点理解(2)
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- Day5 JavaScript(三)事件、表单验证以及初识jQuery
- 深入理解DOM事件类型系列第六篇——加载事件
- 委托与事件学习理解2--进阶包括Lambda表达式、匿名类
- ExpandableListView为child子列表添加长按事件(有部分内容是网上内容,但大部分是我自己的理解)
- [转载] 理解 epoll 的事件触发机制
- Android笔记--整理我所理解的Touch 事件分发机制
- 我对事件驱动的理解
- STM32 外部中断和事件 的区别和理解
- Android 事件分发机制---move、up事件源码理解
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- 对Java和C#事件机制的理解
- Microsoft Dynamics CRM 2011 表单OnSave(ExecutionObj)、OnChange、PageOnLoad事件理解
- 对于GridView控件的RowDataBount事件的错误理解
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- 深入理解DOM事件类型系列第八篇——变动事件
- 初识Android触摸事件传递机制