自定义事件 极其 事件的继承
来源:互联网 发布:怎么下载天人网络电视 编辑:程序博客网 时间:2024/06/09 06:00
// 高手就没必要看了,小弟只是自学 , 如果你不腻赐教,小弟感激不尽!
创建一个事件驱动的程序需要的基本步骤:
1、申明关于事件的委托
2、申明事件
3、编写引发事件的函数
4、创建事件处理程序
5、注册事件处理程序
6、在适当的条件下出发事件
实例 : 主人与看门狗 当晚上主人睡觉时,看门狗负责看家,如果有小偷进来,看门狗发出一个事件Alarm,主人接收到Alarm事件后就会采取相应的行动;
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 自定义事件{ class Program { static void Main(string[] args) { Dog dog = new Dog(); Host host = new Host(dog); DateTime now=new DateTime(2014,3,27,23,59,50); DateTime midnight=new DateTime(2014,3,28,0,0,0); Console.WriteLine("时间一分一秒的流逝"); while(now<midnight) { Console.WriteLine("当前时间:"+now); System.Threading.Thread.Sleep(1000); now = now.AddSeconds(1); } Console.WriteLine("黑夜:"+now+"小偷来了"); dog.OnAlarm(); Console.ReadKey(); } } class Dog { //申明关于事件的委托 public delegate void AlarmEventHandler(object sender, EventArgs e); //申明事件 public event AlarmEventHandler Alarm; //编写引发事件的函数 public void OnAlarm() { if(this.Alarm != null) { Console.WriteLine("狗叫,小偷来了"); this.Alarm(this, new EventArgs()); } } } class Host { //编写事件处理程序 void HostHandlerAlram(object sender, EventArgs e) { Console.WriteLine("主人,抓住了小偷!"); } //注册事件处理程序 public Host(Dog dog) { dog.Alarm += new Dog.AlarmEventHandler(HostHandlerAlram); } }}
事件的继承
下面的代码是对上面代码的更改
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 自定义事件继承{ public class AlarmEventArgs : EventArgs//事件的继承 { public int numberOfthieves; public AlarmEventArgs(int numberOfthieves) { this.numberOfthieves = numberOfthieves; } } class Program { static void Main(string[] args) { Dog dog = new Dog(); Host host = new Host(dog); DateTime now = new DateTime(2014, 3, 27, 23, 59, 50); DateTime midnight = new DateTime(2014, 3, 28, 0, 0, 0); Console.WriteLine("时间一分一秒的流逝"); while(now < midnight) { Console.WriteLine("当前时间:" + now); System.Threading.Thread.Sleep(1000); now = now.AddSeconds(1); } Console.WriteLine("黑夜:" + now + "小偷来了"); AlarmEventArgs e = new AlarmEventArgs(2); dog.OnAlarm(e); Console.ReadKey(); } } class Dog { //申明关于事件的委托 public delegate void AlarmEventHandler(object sender, AlarmEventArgs e); //申明事件 public event AlarmEventHandler Alarm; //编写引发事件的函数 public void OnAlarm(AlarmEventArgs e) { if(this.Alarm != null) { Console.WriteLine("狗叫,小偷来了"); this.Alarm(this, e); } } } class Host { //编写事件处理程序 void HostHandlerAlram(object sender, AlarmEventArgs e) { if(e.numberOfthieves <= 1) { Console.WriteLine("主人,抓住了小偷"); } else { Console.WriteLine("主人拨打了 110 , 我家来了{0}个小偷",e.numberOfthieves); } } //注册事件处理程序 public Host(Dog dog) { dog.Alarm += new Dog.AlarmEventHandler(HostHandlerAlram); } }}
0 0
- 自定义事件 极其 事件的继承
- 处理继承的事件
- C# 事件的继承
- C# 事件的继承
- C# 事件的继承
- C# 事件的继承
- C# 事件的继承
- 继承QToolButon实现Qt自定义按钮遇到的事件问题
- javascript事件,自定义事件,基于自定义事件的解耦
- 控件的自定义事件
- 自定义控件的事件
- 自定义事件的例子
- flex的自定义事件
- 自定义事件的办法
- JQuery的自定义事件
- Flex的自定义事件
- 类的自定义事件
- js的自定义事件
- classes12.jar,ojdbc14.jar,ojdbc5.jar和ojdbc6.jar的区别,之间的差异
- 基于PhoneGap+JQuery Mobile+ArcGISJavascript API实现
- 进程调度算法
- Axis环境配置
- 方法的重载
- 自定义事件 极其 事件的继承
- JavaScript学习笔记(2)
- POJ 2777 Count Color(线段树:区间覆盖)
- Oracle驱动classes12.jar 与ojdbc14.jar的区别
- 理解Fragment生命周期
- java jvm 垃圾回收
- HDU 2123 An easy problem
- UVa 10815 - Andy's First Dictionary
- rand('state',0)