自定义事件(不带参数实现)
来源:互联网 发布:仙桃广电网络客服电话 编辑:程序博客网 时间:2024/04/28 21:49
class Program { static void Main(string[] args) { Dog dg = new Dog(); Host ht = new Host(dg); DateTime now = new DateTime(2015, 8, 26, 23, 59, 40); DateTime end = new DateTime(2015, 8, 27, 0, 0, 0); Console.WriteLine("时间快接近深夜0时~~~~"); while (now < end) { Console.WriteLine(now); Thread.Sleep(1000); now = now.AddSeconds(1); } //午夜零点小偷到达,看门狗引发Alarm事件 Console.WriteLine("月黑风高的午夜: " + now); Console.WriteLine("小偷悄悄地摸进了主人的屋内... "); dg.OnAlarm(); Console.WriteLine("请按任何键退出~"); Console.ReadKey(); } } //自定一个事件参数类 class UserEventArgs : EventArgs { private int iEventArgs; public UserEventArgs(int e) { iEventArgs = e; } } class Dog { //1.声明关于事件的委托; public delegate void AlarmEventHandler(object sender, EventArgs e); //2.声明事件 public event AlarmEventHandler Alarm; //3.编写引发事件的函数; public void OnAlarm() { if (Alarm != null) { Console.WriteLine("汪汪~~"); Alarm(this,new EventArgs()); } } } class Host { //主人接收到信息引发的动作 public void Catch(object sender,EventArgs e) { Console.WriteLine("NND小偷,别跑~"); } public Host(Dog d) { d.Alarm += new Dog.AlarmEventHandler(Catch); } }
要创建一个事件驱动的程序需要下面的步骤:
1. 声明关于事件的委托;
2. 声明事件;
3. 编写触发事件的函数;
4. 创建事件处理程序;
5. 注册事件处理程序;
6. 在适当的条件下触发事件。
当午夜时分小偷到达时,dog调用dog.OnAlarm()函数,从而触发Alarm事件,于是"系统"找到并执行了注册在Alarm事件中的事件处理程序HostHandleAlarm()。
事件处理委托习惯上以EventHandler结尾,比如AlarmEventHandler。事件Alarm实际上是事件处理委托AlarmEventHandler的一个实例。引发事件的代码常常被编写成一个函数,.NET约定这种函数的名称为“OnEventName”,比如OnAlarm()的函数。在Host类中,我们定义了事件处理程序HostHandleAlarm(),并把它注册到dog.Alarm事件中。
事件处理程序的参数应该和事件委托相同。一般情况下,事件处理程序接受两个参数,一个是事件的发送者sender,一个是事件参数e。事件参数用于在发送者和接收者之间传递信息。
0 0
- 自定义事件(不带参数实现)
- 自定义事件(自定义参数,带参数实现)
- C#中自定义控件中带参数事件的实现
- 事件 带参数 和 不带参数 的执行代码
- 不带参数的委托与事件
- AS3.0的 带参数 自定义事件
- AS3.0的 带参数 自定义事件
- Vb.Net程序设计:不带事件参数的事件。
- 在asp.net中使用自定义事件(带参数)
- 【PB】如何触发带参数的自定义事件?
- PB如何触发带参数的自定义事件
- 【PB】如何触发带参数的自定义事件?
- button贴图,点击事件带参数和不带参数连接
- 游标:带参数,不带参数举例
- Oracle游标-cursor_01-简单不带参数实现功能
- 发现 IOS 如UIButton 事件处理函数参数和不带参数写法不一样
- javaEE--request.getRequestDispatcher--URL后带参数实现自定义跳转
- JavaWeb---自定义带参参数
- 学习网站
- leetcode: Binary Tree Postorder Traversal
- Xcode 升级后,常常遇到的遇到的警告、错误,解决方法
- Android下的USB Host介绍和开发
- 【iOS开发系列】MD5加密
- 自定义事件(不带参数实现)
- 詩經甲骨文解讀:羔羊(引入麥田圈兒信息)
- 在Linux下卸载Oracle 11g
- Android LayoutInflater的到View后丢失LayoutParam信息的问题
- 从Log4j迁移到LogBack的理由
- LeetCode(41)First Missing Positive
- VMware Workstation下VMnet1等虚拟网卡与主机网卡之间的关系
- hdu5412
- hdoj 4324 Triangle Love