C#练习委托、事件、事件处理
2013-11-10 11:37
399 查看
控制台应用程序效果:
![](http://images.cnitblog.com/blog/579586/201311/10113710-e6f8e11b858144c58af78ead1ac4083a.jpg)
代码:
![](http://images.cnitblog.com/blog/579586/201311/10113710-e6f8e11b858144c58af78ead1ac4083a.jpg)
代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MyEventTest { class Program { /// <summary> /// 第一步 新建委托需要的带参数的类,属于事件的参数的子类 /// </summary> public class MyClassEventArgs : EventArgs { private string name; public string Name { get { return name; } set { name = value; } } private int age; public int Age { get { return age; } set { age = value; } } } /// <summary> /// //第二步 新建一个带参数的委托 /// </summary> /// <param name="sender">触发源</param> /// <param name="mc">参数</param> public delegate void MyDelegate(object sender,MyClassEventArgs mc); /// <summary> /// 第三步 新建一个会触发事件的类 /// </summary> public class Custom { /// <summary> /// 第四步 新建一个委托发生时触发的事件 /// </summary> public event MyDelegate Shout; private string name; public string Name { get { return name; } set { name = value; } } private int age; public int Age { get { return age; } set { age = value; } } public Custom() { } public Custom(string n, int a) { name = n; age = a; } public void Buy() { Console.WriteLine("{0}:我要来买东西!",this.name); //第五步 在方法中关联事件 MyClassEventArgs mcea = new MyClassEventArgs(); mcea.Name = name; mcea.Age = age; if (Shout != null) { Shout(this,mcea); } } } /// <summary> /// 第六步 新建一个事件发生后要执行的类 /// </summary> public class Reporter { public void Notify(object sender, MyClassEventArgs mcea) { Console.WriteLine("老板:小白快去接客了,客户名字叫{0},年龄{1}岁",mcea.Name,mcea.Age); } } /// <summary> /// 第七步 做一种触发事件的情况,并把事件和事件的处理关联起来 /// </summary> /// <param name="args"></param> static void Main(string[] args) { Custom c1 = new Custom("大美女",18); Reporter r1 = new Reporter(); c1.Shout +=new MyDelegate(r1.Notify); c1.Buy(); } } }
相关文章推荐
- C#的MD5哈希值计算
- discuz!3 二次开发C#学者
- C#日期格式化
- C# 里窗体里(windows form)怎么播放音乐
- 改善c#程序建议集1
- C#水晶报表使用小结
- .NET:CLR via C#:Runtime Serialization
- “上传图片到服务器”之SWFUpload与imgAreaSelect的使用----实现切图效果
- [C#基础知识系列]专题五:VS2010中查看变量内存地址
- C#中List<T>的排序用法(Sort)
- C# Enum,Int,String的互相转换 枚举转换
- C#中的委托
- C#闭包了解
- 让我们写的程序生成单个的exe文件(C#winform程序举例)
- c#播放wav/mp3格式的声音
- 详解C#引用类型String
- C# - 自动属性
- C#判断是否存在已连接的真实网卡(NetConnectionStatus)
- C#委托与事件
- C# 子窗口关闭时在其内定义的Timer释放