时间:2021-05-20
本文实例讲述了C#事件用法。分享给大家供大家参考。具体分析如下:
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);}}#endregionprivate 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#程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了C#中datagridview的EditingControlShowing事件用法。分享给大家供大家参考。具体实现方法如下:usingSystem
本文实例讲述了C#自定义事件及用法。分享给大家供大家参考。具体分析如下:事件是C#中一个重要的内容,MSDN上有一个自定义事件的演示示例。我看了半天有点晕,所以
本文实例讲述了C#基本打印事件用法。分享给大家供大家参考。具体如下:usingSystem;usingSystem.Collections.Generic;us
本文实例讲述了asp.net中c#自定义事件的实现方法。分享给大家供大家参考。具体分析如下:c#自定义事件分为六步,声明关于事件的委托,声明事件,编写引发事件的
本文实例汇总了C#中@的用法,对C#程序设计来说有不错的借鉴价值。具体如下:一字符串中的用法1.学过C#的人都知道C#中字符串常量可以以@开头声名,这样的优点是