免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
C#三步實現(xiàn)標(biāo)準(zhǔn)事件處理程序-程序開發(fā)-紅黑聯(lián)盟
C#三步實現(xiàn)標(biāo)準(zhǔn)事件處理程序 
 
 
 
 
事件,MSDN解釋:類或?qū)ο罂梢酝ㄟ^事件向其他類或?qū)ο笸ㄖl(fā)生的相關(guān)事情。發(fā)送(或引發(fā))事件的類稱為“發(fā)行者”,接收(或處理)事件的類稱為“訂戶”。
有關(guān)事件的理論與好處,在這里就不再廢話了,感興趣的可以參考MSDN的講解。這里就通過有一個demo演示一下如何一步步實現(xiàn)標(biāo)準(zhǔn)的事件處理過程??梢宰鰹橐院蟠a中的事件編寫參考。要運(yùn)用事件,需要了解委托與事件,可以去學(xué)習(xí)相關(guān)教程。
模擬有一個恐怖的軍火提供商要我們實現(xiàn)一個火箭炮的訂單管理程序。效果圖:
第一步:基本實踐
從MSDN上看了事件的講解,我們可能想實踐一下,來編寫一個簡單的事件處理,無參數(shù),也不怎么規(guī)范,但已經(jīng)達(dá)到的實現(xiàn)事件的功能。
代碼
 1 publicclass BookBomb 2     { 3 ///<summary> 4 /// 定義委托 5 ///</summary> 6  publicdelegatevoid BookBombs(); 7 ///<summary> 8 /// 定義事件 9 ///</summary>10  publicevent BookBombs Book;11 publicevent BookBombs Booking;12 publicevent BookBombs Booked;13 14 ///<summary>15 /// 預(yù)定16 ///</summary>17  publicvoid OnBook()18         {19 if (Book !=null)20             {21                 Book();22             }23         }24 ///<summary>25 /// 正在處理26 ///</summary>27  publicvoid OnBooking()28         {29 if (Booking !=null)30             {31                 Booking();32             }33         }34 ///<summary>35 /// 裝配完畢36 ///</summary>37  publicvoid OnBooked()38         {39 if (Booked !=null)40             {41                 Booked();42             }43         }44     }45 }這是一個很基本也不規(guī)范的事件示例,實現(xiàn)了火箭炮的訂單預(yù)定,裝配處理,裝配完畢三個環(huán)節(jié)。
注冊事件很簡單 事件名后輸入+=后會提示按Tab鍵自動導(dǎo)入每個事件相關(guān)的處理程序。
下面看看客戶程序的注冊與調(diào)用。
代碼
 1 //聲明 2          BookBomb _bookBomb =null; 3 _bookBomb =new BookBomb(); 4 //分別注冊三個事件 5              _bookBomb.Book +=new BookBomb.BookBombs(_bookBomb_Book); 6             _bookBomb.Booking +=new BookBomb.BookBombs(_bookBomb_Booking); 7             _bookBomb.Booked +=new BookBomb.BookBombs(_bookBomb_Booked); 8  void _bookBomb_Booked() 9         {10             txtMsg.AppendText("裝配完畢 型號:NB-250  數(shù)量:10 \r\n\r\n");11         }12 13 void _bookBomb_Booking()14         {15             txtMsg.AppendText("正在裝配 型號:NB-250  數(shù)量:10 \r\n");16         }17 18 void _bookBomb_Book()19         {20             txtMsg.AppendText("預(yù)定炸彈 型號:NB-250  數(shù)量:10 \r\n");21         }22  //模擬訂單處理流程的有三次調(diào)用23              _bookBomb.OnBook();24             _bookBomb.OnBooking();25             _bookBomb.OnBooked();簡單的實現(xiàn)就完成了。事件處理的結(jié)果是在消息框內(nèi)輸出相關(guān)訂單的簡要信息。
第二步:帶參數(shù)事件處理
在第一步實踐中,事件處理的時候并沒有傳入?yún)?shù),而我們實際程序中會提供參數(shù)做相應(yīng)處理,并且會根據(jù)業(yè)務(wù)的不同執(zhí)行不同事件處理。并且上一實踐中的命名也不太規(guī)范,似乎跟我們在IDE中看到的按鈕等其他處理程序不太一樣。這一實踐,我們進(jìn)行改革完善。
給事件提供參數(shù),要求我們的參數(shù)要符合.net規(guī)范里的參數(shù)定義。我們繼承.net的參數(shù)類EventArgs 來自定義我們自己的參數(shù)類型:
 
代碼
 1 ///<summary> 2 /// 事件參數(shù) 3 ///</summary> 4  publicclass SimpleBookEventArgs : EventArgs 5     { 6 privateint _count =0; 7 publicint Count 8         { 9 get { return _count; }10 set { _count = value; }11         }12 13 privatestring _model;14 publicstring Name15         {16 get { return _model; }17 set { _model = value; }18         }19     }20 21 publicclass SimpleBookBomb22     {23 publicdelegatevoid SimpleBookEventHandler(SimpleBookEventArgs e);24 publicevent SimpleBookEventHandler SimpleBookEvent;25 publicevent SimpleBookEventHandler SimpleBookingEvent;26 publicevent SimpleBookEventHandler SimpleBookedEvent;27 ///<summary>28 /// 預(yù)定29 ///</summary>30 ///<param name="e"></param>31 publicvoid OnSimpleBook(SimpleBookEventArgs e)32         {33 if (SimpleBookEvent !=null)34             {35 this.SimpleBookEvent(e);36             }37         }38 ///<summary>39 /// 正在處理40 ///</summary>41 publicvoid OnSimpleBooking(SimpleBookEventArgs e)42         {43 if (SimpleBookingEvent !=null)44             {45 this.SimpleBookingEvent(e);46             }47         }48 ///<summary>49 /// 裝配完畢50 ///</summary>51 publicvoid OnSimpleBooked(SimpleBookEventArgs e)52         {53 if (SimpleBookedEvent !=null)54             {55 this.SimpleBookedEvent(e);56             }57         }58     }
第三步:標(biāo)準(zhǔn)的事件實現(xiàn)
通過以上兩個實踐,細(xì)心的你會發(fā)現(xiàn)怎么看上去跟系統(tǒng)的那些事件“樣式”還不太一樣呢,如果按鈕事件的參數(shù)是兩個,還有類似sender,例如:
privatevoid btnStandard_Click(object sender, EventArgs e)
加上去就行了,對于系統(tǒng)的類事件,Sender參數(shù)只是簡單地傳遞了指向引發(fā)事件的那個類的實例的一個引用,e依然是事件處理的參數(shù)。
看一個相對標(biāo)準(zhǔn)的示例:
參數(shù)定義:
代碼
 1 ///<summary> 2 /// 事件參數(shù) 3 ///</summary> 4 publicclass StandardBookEventArgs : EventArgs 5     { 6 privateint _count =0; 7 publicint Count 8         { 9 get { return _count; }10 set { _count = value; }11         }12 13 privatestring _name;14 publicstring Name15         {16 get { return _name; }17 set { _name = value; }18         }19     }20 21 publicclass StandardBookBomb22     {23 publicdelegatevoid StandardBookEventHandler(object sender, StandardBookEventArgs e);24 publicevent StandardBookEventHandler StandardBookEvent;25 publicevent StandardBookEventHandler StandardBookingEvent;26 publicevent StandardBookEventHandler StandardBookedEvent;27 ///<summary>28 /// 預(yù)定29 ///</summary>30 publicvoid OnStandardBook(object sender, StandardBookEventArgs e)31         {32 if (StandardBookEvent !=null)33             {34 this.StandardBookEvent(sender, e);35             }36         }37 ///<summary>38 /// 正在處理39 ///</summary>40 publicvoid OnStandardBooking(object sender, StandardBookEventArgs e)41         {42 if (StandardBookingEvent !=null)43             {44 this.StandardBookingEvent(sender, e);45             }46         }47 ///<summary>48 /// 裝配完畢49 ///</summary>50 publicvoid OnStandardBooked(object sender, StandardBookEventArgs e)51         {52 if (StandardBookedEvent !=null)53             {54 this.StandardBookedEvent(sender, e);55             }56         }57     }
總結(jié):通過一步步進(jìn)化,在第三個實踐中已經(jīng)是一個相對“標(biāo)準(zhǔn)”的事件處理過程了。
命名規(guī)范:
參數(shù)后綴EventArgs,例如 :StandardBookEventArgs
委托后綴EventHandler,例如:StandardBookEventHandler
事件后綴Event,例如:StandardBookEvent
處理方法前綴On,例如:OnStandardBook()
大致步驟:
1,      定義參數(shù)
2,      定義委托
3,      定義事件
4,      注冊事件
5,      實現(xiàn)事件處理程序
6,      觸發(fā)事件
這個可以作為以后寫類似代碼的參考。
 
摘自紅色黑客聯(lián)盟(www.7747.net) 原文:http://www.7747.net/kf/201007/52733.html
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
RegisterWaitForSingleObject注冊消息映射
Alex's Blog : 透析回調(diào)函數(shù)
Swing中使用SwingWorkerAAA
c# 數(shù)據(jù)庫連接類
[C# 開發(fā)技巧]如何防止程序多次運(yùn)行
★C語言試題及答案
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服