C#事件用法實(shí)例淺析
本文實(shí)例講述了C#事件用法。分享給大家供大家參考。具體分析如下:
EventHandler<TEventArgs>的定義如下
public delegate void EventHandler<TEventArgs>(object sender,TEventArgs e) where TEventArgs:EventArgs
第一個參數(shù)必須是object類型(是一個對象,包含事件的發(fā)送者)
第二個參數(shù)是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; } } //觸發(fā)事件的類 public class CarDealer { public event EventHandler<CardInfoEventArgs> NewCardInfo; public void NewCar(string car) { Console.WriteLine("CarDealer,new car{0}", car); //在觸發(fā)事件之前,需要檢查委托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("奧迪"); }
測試結(jié)果截圖
希望本文所述對大家的C#程序設(shè)計有所幫助。
- 理解C#中的事件
- C#移除所有事件綁定的方法
- C#動態(tài)生成按鈕及定義按鈕事件的方法
- C#自定義事件及用法實(shí)例
- C#獲取USB事件API實(shí)例分析
- C#通過委托調(diào)用Button單擊事件的方法
- 詳解C#編程中.NET的弱事件模式
- C#自定義事件監(jiān)聽實(shí)現(xiàn)方法
- 結(jié)合Visual C#開發(fā)環(huán)境講解C#中事件的訂閱和取消訂閱
- 在C#使用字典存儲事件示例及實(shí)現(xiàn)自定義事件訪問器
- 結(jié)合.net框架在C#派生類中觸發(fā)基類事件及實(shí)現(xiàn)接口事件
- C#委托與事件初探
- C#中事件的定義和使用
相關(guān)文章
C# HttpClient上傳文件并附帶其它參數(shù)方式
這篇文章主要介紹了C# HttpClient上傳文件并附帶其它參數(shù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11C#實(shí)現(xiàn)順序棧和鏈棧的代碼實(shí)例
今天小編就為大家分享一篇關(guān)于的C#實(shí)現(xiàn)順序棧和鏈棧的代碼實(shí)例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-10-10C#動態(tài)加載組件后如何在開發(fā)環(huán)境中調(diào)試詳解
這篇文章主要給大家介紹了關(guān)于C#動態(tài)加載組件后如何在開發(fā)環(huán)境中調(diào)試的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03C#實(shí)現(xiàn)判斷操作系統(tǒng)是否為Win8以上版本
這篇文章主要介紹了C#實(shí)現(xiàn)判斷操作系統(tǒng)是否為Win8以上版本,本文講解了利用C#獲取OS的版本號、利用反射獲取當(dāng)前正在運(yùn)行的程序的版本信息、 利用C#判斷當(dāng)前操作系統(tǒng)是否為Win8系統(tǒng)等內(nèi)容,需要的朋友可以參考下2015-06-06