簡單探討C#中GUI程式設計的標準事件問題
導讀 |
這篇文章主要介紹了C#中GUI程式設計的標準事件,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑑價值,需要的朋友可以參考下
|
昨天的文章,帶大家簡單學習C#中的事件,瞭解訂閱者和釋出者之間的邏輯關聯,也通過小案例進行實際操作,可以看到具體的輸出結果。
目前在工作中,使用Winform桌面開發比較多,很多時候就會用到事件,此時這裡的事件用法有一個俗稱叫GUI程式設計。
在程式執行時,它可以在任何時候被打斷,比如按鈕點選,按下按鍵或系統定時器。在這些情況發生時,程式需要處理事件然後繼續其他事情。
在Windows GUI程式設計中經常會用到程式事件的非同步處理。
這種程式事件.NET框架提供一個標準模式。使用System名稱空間下的EventHandler委託型別。
public delegate void EventHandler(object sender,EventArgs e)
其中關於宣告EventHandle委託型別,這裡需要注意以下三點:
第一個引數用於儲存觸發事件的物件的引用
第二個引數用於儲存狀態資訊,指明什麼型別適用於該應用程式
返回型別是void
關於第二個引數型別EventArgs這裡特別需要說明下,它不是為了傳遞引數而設計的,當它用於不需要傳遞引數的事件處理程式時該忽略,如果需要傳遞引數那麼就必須宣告一個派生自EventArgs的類,使用合適的欄位來儲存需要傳遞的資料
不管引數使用的實際型別是什麼,Object類和EventArgs類都是基類。這樣EventHandler就可提供一個對所有事件和事件處理器都通用的簽名,只有兩個引數,而不是各自都有不同的簽名。
這裡還繼續對昨天文章中的案例進行修改,阿輝訂閱了報社的報紙,當報社發報時,阿輝就能收到報紙進行閱讀。
這裡需要注意:
宣告系統定義時使用EventHandler替換Handler
阿輝訂閱者中的事件處理程式簽名應和事件委託的簽名匹配(不傳遞資料時可忽略)
觸發事件的程式碼在呼叫時必須使用適當的引數型別物件
////// 報社 ///class NewspaperOffice { public event EventHandler StartPublishPaper; //1、宣告事件 public void Publish() { Console.WriteLine("已釋出報紙!"); StartPublishPaper(this,null); //3、觸發事件,通知訂閱者收報紙進行閱讀 } }
////// 阿輝 訂閱者 ///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(); }
這裡簡單介紹標準的GUI程式設計中的事件,沒有用於傳遞引數。下一篇文章將介紹如何通過標準事件來傳遞引數用於Winform中的非同步處理。
到此這篇關於C#中GUI程式設計的標準事件的文章就介紹到這了
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2855085/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 探討免費遊戲設計的道德標準問題遊戲設計
- 簡單探討sum()函式返回null的問題函式Null
- 簡單探討Golang中defer預計算引數Golang
- 探討系統中?錢的精度問題
- 介面設計的行業標準總結-GUI設計的相關行業標準(上)薦行業GUI
- 介面設計的行業標準總結-GUI設計的相關行業標準(下)薦行業GUI
- 前端中的簡單程式設計題-字串(1)前端程式設計字串
- 訂單系統中併發問題和鎖機制的探討
- 勘察設計單位引入現代專案管理有關問題的探討1(轉)專案管理
- 勘察設計單位引入現代專案管理有關問題的探討2(轉)專案管理
- 勘察設計單位引入現代專案管理有關問題的探討3(轉)專案管理
- Android設計模式探討--單例模式Android設計模式單例
- Android設計模式探討 單例模式Android設計模式單例
- 前端中的簡單程式設計題-陣列(2)前端程式設計陣列
- 前端中的簡單程式設計題-陣列(1)前端程式設計陣列
- Java-GUI程式設計之事件處理JavaGUI程式設計事件
- C#中的介面和泛型集合探討C#泛型
- Web標準中的常見問題Web
- 簡單探討TypeScript 列舉型別TypeScript型別
- 程式設計師面試的標準答案並不標準程式設計師面試
- 簡單探討區塊鏈中的不可能三角區塊鏈
- 探討電子遊戲應如何設定簡單的成就機制遊戲
- 一起探討下web請求流程的程式碼結構設計(簡單以交易為栗子)Web
- NSOperation的進階使用和簡單探討
- NSThead的進階使用和簡單探討
- GUI程式設計GUI程式設計
- 專案團隊的信任問題探討
- 極限程式設計中的簡單設計原則程式設計
- 多次執行mysql_fetch_array()的指標歸位問題探討MySql指標
- 簡單探討JavaScript 與 TypeScript之間的聯絡JavaScriptTypeScript
- Java-GUI程式設計之選單元件JavaGUI程式設計元件
- RESTful Api 身份認證中的安全性設計探討RESTAPI
- 給使用者資訊加密的問題探討加密
- 專案團隊的信任問題探討(轉)
- C#網路程式設計-簡單的通訊原始碼C#程式設計原始碼
- 01 GUI程式設計GUI程式設計
- 使用Tkinter模組來建立簡單的GUI程式GUI
- laravel 事件系統 問題討論Laravel事件