簡單探討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
- 探討系統中?錢的精度問題
- 前端中的簡單程式設計題-字串(1)前端程式設計字串
- Java-GUI程式設計之事件處理JavaGUI程式設計事件
- 前端中的簡單程式設計題-陣列(2)前端程式設計陣列
- NSOperation的進階使用和簡單探討
- NSThead的進階使用和簡單探討
- C#中的介面和泛型集合探討C#泛型
- Day43--GUI程式設計簡介GUI程式設計
- 一起探討下web請求流程的程式碼結構設計(簡單以交易為栗子)Web
- 簡單探討TypeScript 列舉型別TypeScript型別
- 多次執行mysql_fetch_array()的指標歸位問題探討MySql指標
- GUI程式設計GUI程式設計
- 簡單探討區塊鏈中的不可能三角區塊鏈
- 關於vue中image控制元件,onload事件裡,event.target 為null的奇怪問題探討Vue控制元件事件Null
- Java-GUI程式設計之選單元件JavaGUI程式設計元件
- 深入探討:Maven中的物料清單BOMMaven
- 簡單探討JavaScript 與 TypeScript之間的聯絡JavaScriptTypeScript
- 01 GUI程式設計GUI程式設計
- laravel 事件系統 問題討論Laravel事件
- 痞子衡嵌入式:探討i.MXRT下FlexSPI driver實現Flash程式設計時對於中斷支援問題Flex程式設計
- c#簡單工廠設計模式C#設計模式
- Android APP安全問題應對辦法的探討AndroidAPP
- 14.GUI 程式設計GUI程式設計
- TRIZ理論在洗碗機設計中應用探討
- 1024程式設計師節/探討ORACLE環境故障的解決方法程式設計師Oracle
- 最簡單的C程式設計--順序程式設計C程式程式設計
- 深入探討單例模式單例模式
- 智慧網聯建設核心評價指標探討指標
- Java程式設計師,你的簡歷到底問題在哪?Java程式設計師
- 問題定級標準
- PyQt5 GUI程式設計QTGUI程式設計
- GUI程式設計process4GUI程式設計
- 樹莓派GUI程式設計樹莓派GUI程式設計
- 程式設計師程式設計時的簡單方法與技巧程式設計師
- 介面設計標準
- “報錯”是程式設計世界中,最簡單的事情!程式設計