C#事件用法实例浅析
2015-05-16 12:01
721 查看
EventHandler<TEventArgs>的定义如下
public delegate void EventHandler<TEventArgs>(object sender,TEventArgs e) where TEventArgs:EventArgs
第一个参数必须是object类型(是一个对象,包含事件的发送者)
第二个参数是T类型(即泛型),定义了一个T的约束,它必须派生自基类EventArgs
CardInfoEventArgs 就派生自基类EventArgs
举例
#region 测试事件1 //EventArgs类 public class CardInfoEventArgs : EventArgs { public string Car { get; private set; } public CardInfoEventArgs(string car) { this.Car = car; } } //触发事件的类 public class CarDealer { public event EventHandler<CardInfoEventArgs> NewCardInfo; public void NewCar(string car) { Console.WriteLine("CarDealer,new car{0}", car); //在触发事件之前,需要检查委托NewCardInfo是否不为空。 //如果没有订阅处理程序,委托就是空 if (NewCardInfo != null) { NewCardInfo(this, new CardInfoEventArgs(car)); } } } //处理事件的类 public class Consumer { private string name; public Consumer(string name) { this.name = name; } //处理事件的方法 public void NewCarIsHere(object sender, CardInfoEventArgs e) { Console.WriteLine("{0}:car {1} is new", name, e.Car); } } #endregion private void button_测试事件1_Click(object sender, EventArgs e) { CarDealer dealer = new CarDealer(); Consumer michael = new Consumer("Michael"); dealer.NewCardInfo += michael.NewCarIsHere; //订阅事件 dealer.NewCar("宝马"); Consumer nick = new Consumer("Nick"); dealer.NewCardInfo += nick.NewCarIsHere; //订阅事件 dealer.NewCar("奔驰"); dealer.NewCardInfo -= michael.NewCarIsHere; //取消订阅事件 dealer.NewCar("奥迪"); }
测试结果截图
希望本文所述对大家的C#程序设计有所帮助。
您可能感兴趣的文章:
相关文章推荐
- C#中datagridview的EditingControlShowing事件用法实例
- C#自定义事件及用法实例
- C#基本打印事件用法实例
- C#窗体关闭事件的重载实现浅析
- C#中数组、ArrayList、List、Dictionary的用法与区别浅析(存取数据)
- C# Timer用法及实例讲解
- C#中dotnetcharting的用法实例详解
- C#皮肤的用法(皮肤资源+使用实例下载)
- 实例分享C#中Explicit和Implicit用法
- C#使用webbrowser的常见用法实例
- C#delegate用法和用户自定义事件
- JavaScript事件用法浅析
- C#中dataGridView用法实例分析
- C#中委托和事件的一个简单实例
- c#的委托和事件的实例学习
- C#列表框、复选列表框、组合框的用法实例
- XSD(XML Schema Definition)用法实例介绍以及C#使用xsd文件验证XML格式
- C#中JavaScriptSerializer帮助类用法实例
- c# 事件用法2
- 看看可爱c#中的delegate(委托)和event(事件)用法好不好