這篇文章主要介紹“C#中GUI編程的標準事件案例分析”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“C#中GUI編程的標準事件案例分析”文章能幫助大家解決問題。
這種程序事件.NET框架提供一個標準模式。使用System命名空間下的EventHandler委托類型。
public delegate void EventHandler(object sender,EventArgs e)
其中關于聲明EventHandle委托類型,這里需要注意以下三點:
第一個參數用于保存觸發事件的對象的引用
第二個參數用于保存狀態信息,指明什么類型適用于該應用程序
返回類型是void
關于第二個參數類型EventArgs這里特別需要說明下,它不是為了傳遞參數而設計的,當它用于不需要傳遞參數的事件處理程序時該忽略,如果需要傳遞參數那么就必須聲明一個派生自EventArgs的類,使用合適的字段來保存需要傳遞的數據
不管參數使用的實際類型是什么,Object類和EventArgs類都是基類。這樣EventHandler就可提供一個對所有事件和事件處理器都通用的簽名,只有兩個參數,而不是各自都有不同的簽名。
這里還繼續對昨天文章中的案例進行修改,阿輝訂閱了報社的報紙,當報社發報時,阿輝就能收到報紙進行閱讀。
這里需要注意:
聲明系統定義時使用EventHandler替換Handler
阿輝訂閱者中的事件處理程序簽名應和事件委托的簽名匹配(不傳遞數據時可忽略)
觸發事件的代碼在調用時必須使用適當的參數類型對象
報社
/// <summary> /// 報社 /// </summary> class NewspaperOffice { public event EventHandler StartPublishPaper; //1、聲明事件 public void Publish() { Console.WriteLine("已發布報紙!"); StartPublishPaper(this,null); //3、觸發事件,通知訂閱者收報紙進行閱讀 } }
阿輝訂閱者
/// <summary> /// 阿輝 訂閱者 /// </summary> class AhuiPeople { public AhuiPeople(NewspaperOffice npo) { npo.StartPublishPaper += SubscriptinPaper; //2、訂閱事件 } void SubscriptinPaper(object sender,EventArgs e) { Console.WriteLine("阿輝接收到報紙,開始閱讀!"); } }
觸發事件開始發報
static void Main(string[] args) { NewspaperOffice npo = new NewspaperOffice(); AhuiPeople ahuiPeople = new AhuiPeople(npo); //報社發報 Console.WriteLine("報社計劃開始發報!"); npo.Publish(); Console.ReadKey(); }
輸出結果
關于“C#中GUI編程的標準事件案例分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。