事件、委托的定义与使用示例

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace Test
 7 {
 8     class Start
 9     {
10         public static void Main()
11         {
12             Tool.Fan fan = new Tool.Fan();
13             fan.Rotating += new Tool.RotatingEventHander(fan_Rotating);
14             fan.PowerOn();
15         }
16 
17         static void fan_Rotating(object sender, Tool.RotatingEventArgs e)
18         {
19             Tool.Fan fan = (Tool.Fan)sender;
20             Console.WriteLine("The brand name of this product: {0}.\nPlace of production: {1}.",fan.BrandName,fan.PlaceOfProduction);
21             Console.Write("\n");
22             Console.WriteLine("This fan is power on now.");
23             Console.WriteLine("Current speed is {0}\nCurrent power is {1}.", e.Speed, e.Power);
24             Console.Write("\n");
25             e.Cancel = true;
26             Console.WriteLine("This fan is power off now.");
27             Console.WriteLine("Current speed is {0}.\nCurrent power is {1}.", e.Speed, e.Power);
28             Console.ReadKey();
29         }
30     }
31 }
32 
33 namespace Tool
34 {
35     public class RotatingEventArgs : EventArgs //监视对象转动中的一些数据
36     {
37         private int _speed;//转速
38         public int Speed
39         {
40             get
41             {
42                 return _speed;
43             }
44         }
45         private int _power;//功率
46         public int Power
47         {
48             get
49             {
50                 return _power;
51             }
52         }
53         private bool _cancel = false;//是否取消该转动
54         public bool Cancel
55         {
56             set
57             {
58                 _cancel = value;
59                 if (_cancel == true)
60                 {
61                     _speed = 0;
62                     _power = 0;
63                 }
64             }
65             get
66             {
67                 return _cancel;
68             }
69         }
70         public RotatingEventArgs() //构造函数
71         {
72             _speed = 2300;
73             _power = 5;
74         }
75     }
76 
77     //定义委托
78     public delegate void RotatingEventHander(object sender, RotatingEventArgs e);
79     public class Fan //监视对象
80     {
81         //定义事件
82         public event RotatingEventHander Rotating;
83 
84         protected virtual void OnRotating(RotatingEventArgs e)
85         {
86             if (Rotating != null)//事件方法注册
87             {
88                 Rotating(this, e);
89             }
90         }
91         public void PowerOn()
92         {
93             RotatingEventArgs e = new RotatingEventArgs();
94             OnRotating(e);
95         }
96         public readonly String BrandName = "CNC";
97         public readonly string PlaceOfProduction = "Guangzhou,China";
98     }
99 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我和未来有约会

xml-rpc(2)-first demo_v2

[XmlRpcMethod("blogger.getUsersBlogs", Description = "获取博客信息")]         public B...

1895
来自专栏菩提树下的杨过

[基础]datagridview绑定数据源的几种常见方式

private void button1_Click(object sender, EventArgs e)         {             /...

2045
来自专栏跟着阿笨一起玩NET

【经典示例分享】— 商城购物车设计(VS+Access)附源码

弹指一挥间,从事开发工作两年多了,工作记录文件夹不知不觉好几G了。今天分享下之前项目中用到的一个购物车示例,虽然用的技术比较老(拖放控件DataGview),我...

2622
来自专栏菩提树下的杨过

C#:DataTable映射成Model

这是数据库开发中经常遇到的问题,当然,这可以用现成的ORM框架来解决,但有些时候,如果DataSet/DataTable是第三方接口返回的,ORM就不方便了,还...

20710
来自专栏互联网开发者交流社区

ASP.NET部分代码示例

1102
来自专栏令仔很忙

EasyUI----DataTable转拼EasyUI Tree

在做系统的时候,有一些组织机构类的关系,成树状结构,前台用的是EasyUI,由于涉及到多张表的数据,想要动态的拼接出一个树状的组织结构,后台传过来的是DataT...

1042
来自专栏Albert陈凯

CRC32算法冲突概率测试和分析

最近因为某个业务需要用到CRC32算法,但业务又不能容忍重复的数值出现,于是自然就想了解一下CRC32算法的冲突概率(或者叫碰撞概率)。 本以为这种问题应该很多...

4879
来自专栏技术博客

字符串"2013/5/18 0:00:00”不是有效的 AllXsd 值

可以看到上述日期字符串当中18后面存在一个空格,就是这个空格导致的不是一个有效的AllXsd值。想让此字符串日期转换为有效的格式,可以用T来替换掉18后面的空格...

1453
来自专栏一个爱瞎折腾的程序猿

使用HttpDownLoadHelper下载文件

751
来自专栏跟着阿笨一起玩NET

C#自定义泛型类绑定ComboBox控件

C# WinForm ComboBox 自定义数据项 (ComboBoxItem )

1611

扫码关注云+社区