C#事件用法實(shí)例淺析
本文實(shí)例講述了C#事件用法。分享給大家供大家參考。具體分析如下:
EventHandler<TEventArgs>的定義如下
public delegate void EventHandler<TEventArgs>(object sender,TEventArgs e) where TEventArgs:EventArgs
第一個(gè)參數(shù)必須是object類型(是一個(gè)對(duì)象,包含事件的發(fā)送者)
第二個(gè)參數(shù)是T類型(即泛型),定義了一個(gè)T的約束,它必須派生自基類EventArgs
CardInfoEventArgs 就派生自基類EventArgs
舉例
#region 測(cè)試事件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是否不為空。
//如果沒(méi)有訂閱處理程序,委托就是空
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_測(cè)試事件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è)試結(jié)果截圖

希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
- 理解C#中的事件
- C#移除所有事件綁定的方法
- C#動(dòng)態(tài)生成按鈕及定義按鈕事件的方法
- C#自定義事件及用法實(shí)例
- C#獲取USB事件API實(shí)例分析
- C#通過(guò)委托調(diào)用Button單擊事件的方法
- 詳解C#編程中.NET的弱事件模式
- C#自定義事件監(jiān)聽(tīng)實(shí)現(xiàn)方法
- 結(jié)合Visual C#開(kāi)發(fā)環(huán)境講解C#中事件的訂閱和取消訂閱
- 在C#使用字典存儲(chǔ)事件示例及實(shí)現(xiàn)自定義事件訪問(wèn)器
- 結(jié)合.net框架在C#派生類中觸發(fā)基類事件及實(shí)現(xiàn)接口事件
- C#委托與事件初探
- C#中事件的定義和使用
相關(guān)文章
C#連接Oracle數(shù)據(jù)庫(kù)的多種方法總結(jié)
最近小項(xiàng)目當(dāng)中要使用C#來(lái)連接Oracle數(shù)據(jù)庫(kù)來(lái)完成系統(tǒng)的操作,這篇文章主要給大家介紹了關(guān)于C#連接Oracle數(shù)據(jù)庫(kù)的多種方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04
C#程序連接數(shù)據(jù)庫(kù)及讀取數(shù)據(jù)庫(kù)中字段的簡(jiǎn)單方法總結(jié)
包括C#連接Access、Oracle或者SQL Server,這里整理了一些C#連接數(shù)據(jù)庫(kù)及從讀取數(shù)據(jù)庫(kù)中字段的簡(jiǎn)單方法總結(jié),需要的朋友可以參考下2016-05-05
C#?WinForm?RichTextBox文本動(dòng)態(tài)滾動(dòng)顯示文本方式
這篇文章主要介紹了C#?WinForm?RichTextBox文本動(dòng)態(tài)滾動(dòng)顯示文本方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
visio二次開(kāi)發(fā)--判斷文檔是否已發(fā)生變化(變化就加星號(hào)*)
最近做一個(gè)故障樹(shù)診斷的項(xiàng)目,用visio二次開(kāi)發(fā),可以同時(shí)打開(kāi)多個(gè)繪制的故障樹(shù)圖形文檔。項(xiàng)目中需要實(shí)現(xiàn)判斷文檔是否發(fā)生變化,這是很多編輯軟件的基本功能,變化了就加個(gè)星號(hào)*2013-04-04
C#開(kāi)發(fā)微信公眾號(hào)接口開(kāi)發(fā)
這篇文章主要介紹了C#微信公眾號(hào)接口開(kāi)發(fā),靈活利用網(wǎng)頁(yè)授權(quán)、帶參數(shù)二維碼、模板消息,提升用戶體驗(yàn)之完成用戶綁定個(gè)人微信及驗(yàn)證碼獲取,需要的朋友可以參考下2015-07-07
C#實(shí)現(xiàn)字符串進(jìn)制轉(zhuǎn)換方法匯總
這篇文章主要介紹了C#實(shí)現(xiàn)字符串進(jìn)制轉(zhuǎn)換方法匯總,給大家羅列了十幾種機(jī)制轉(zhuǎn)換問(wèn)題,感興趣的朋友跟隨小編一起看看吧2022-11-11

