成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

描述C#事件處理程序

開發 后端
本文介紹C#事件處理程序,我們就按照這個順序來實現一個捕獲鍵盤按鍵的程序,來一步一步說明如何編寫事件應用程序。

C#事件處理程序

我們可以把事件編程簡單地分成兩個部分:事件發生的類(書面上叫事件發生器)和事件接收處理的類。事件發生的類就是說在這個類中觸發了一個事件,但這個類并不知道哪個個對象或方法將會加收到并處理它觸發的事件。所需要的是在發送方和接收方之間存在一個媒介。這個媒介在.NET Framework中就是委托(delegate)。在事件接收處理的類中,我們需要有一個處理事件的方法。好了,我們就按照這個順序來實現一個捕獲鍵盤按鍵的程序,來一步一步說明如何編寫事件應用程序。

1、首先創建一個自己的EventArgs類。
引自MSDN:
EventArgs是包含事件數據的類的基類,此類不包含事件數據,在事件引發時不向C#事件處理程序傳遞狀態信息的事件會使用此類。如果C#事件處理程序需要狀態信息,則應用程序必須從此類派生一個類來保存數據。
因為在我們鍵盤按鍵事件中要包含按鍵信息,所以要派生一個KeyEventArgs類,來保存按鍵信息,好讓后面知道按了哪個鍵。

  1. internalclassKeyEventArgs:EventArgs  
  2. {  
  3. privatecharkeyChar;  
  4. publicKeyEventArgs(charkeyChar):base()  
  5. {  
  6. this.keyChar=keyChar;  
  7. }  
  8.  
  9. publiccharKeyChar  
  10. {  
  11. get  
  12. {  
  13. returnkeyChar;  
  14. }  
  15. }  

2、再創建一個事件發生的類KeyInputMonitor,這個類用于監控鍵盤按鍵的輸入并觸發一個事件:

  1. internalclassKeyInputMonitor  
  2. {  
  3. //創建一個委托,返回類型為void,兩個參數  
  4. publicdelegatevoidKeyDown(objectsender,KeyEventArgse);  
  5. //將創建的委托和特定事件關聯,在這里特定的事件為OnKeyDown  
  6. publiceventKeyDownOnKeyDown;  
  7.  
  8. publicvoidRun()  
  9. {  
  10. boolfinished=false;  
  11. do  
  12. {  
  13. Console.WriteLine("Inputachar");  
  14. stringresponse=Console.ReadLine();  
  15.  
  16. charresponseChar=(response=="")?'':char.ToUpper(response[0]);  
  17. switch(responseChar)  
  18. {  
  19. case'X':  
  20. finished=true;  
  21. break;  
  22. default:  
  23. //得到按鍵信息的參數  
  24. KeyEventArgskeyEventArgs=newKeyEventArgs(responseChar);  
  25. //觸發事件  
  26. OnKeyDown(this,keyEventArgs);  
  27. break;  
  28. }  
  29. }while(!finished);  
  30. }  

這里注意OnKeyDown( this, KeyEventArgs );一句,這就是觸發事件的語句,并將事件交由KeyDown這個委托來處理,委托指定事件處理方法去處理事件,這就是事件接收方的類的事情了。參數this是指觸發事件的對象就是本身這個對象,keyEventArgs包含了按鍵信息。

3、最后創建一個事件接收方的類

這個類先產生一個委托實例,再把這個委托實例添加到產生事件對象的事件列表中去,這個過程又叫訂閱事件。然后提供一個方法回顯按鍵信息。

  1. internalclassEventReceiver  
  2. {  
  3. publicEventReceiver(KeyInputMonitormonitor)  
  4. {  
  5. //產生一個委托實例并添加到KeyInputMonitor產生的事件列表中  
  6. monitor.OnKeyDown+=newKeyInputMonitor.KeyDown(this.Echo);  
  7. }  
  8. privatevoidEcho(objectsender,KeyEventArgse)  
  9. {  
  10. //真正的事件處理函數  
  11. Console.WriteLine("Capturekey:{0}",e.KeyChar);  
  12. }  

4、看一下如何調用

  1. publicclassMainEntryPoint  
  2. {  
  3. publicstaticvoidStart()  
  4. {  
  5. //實例化一個事件發送器  
  6. KeyInputMonitormonitor=newKeyInputMonitor();  
  7. //實例化一個事件接收器  
  8. EventReceivereventReceiver=newEventReceiver(monitor);  
  9. //運行  
  10. monitor.Run();  
  11. }  

總結:

C#中使用事件需要的步驟:
1.創建一個委托
2.將創建的委托與特定事件關聯(.Net類庫中的很多事件都是已經定制好的,所以他們也就有相應的一個委托,在編寫關聯C#事件處理程序--也就是當有事件發生時我們要執行的方法的時候我們需要和這個委托有相同的簽名)
3.編寫C#事件處理程序
4.利用編寫的C#事件處理程序生成一個委托實例
5.把這個委托實例添加到產生事件對象的事件列表中去,這個過程又叫訂閱事件

C#中事件產生和實現的流程:
1.定義A為產生事件的實例,a為A產生的一個事件
2.定義B為接收事件的實例,b為處理事件的方法
3.A由于用戶(程序編寫者或程序使用者)或者系統產生一個a事件(例如點擊一個Button,產生一個Click事件)
4.A通過事件列表中的委托對象將這個事件通知給B
5.B接到一個事件通知(實際是B.b利用委托來實現事件的接收)
6.調用B.b方法完成事件處理

【編輯推薦】

  1. 定義C#接口學習經驗
  2. C# ListBox學習筆記
  3. 操作C# Dataset介紹
  4. C# ODBC訪問MySQL數據庫
  5. 淺析C#和Java不同點
責任編輯:佚名 來源: BlogJava
相關推薦

2009-09-07 15:31:49

C#支持事件

2009-08-13 17:04:09

C#語言C#程序

2009-08-12 15:20:21

C#事件處理

2009-09-03 17:59:18

C#調用事件

2009-09-03 15:46:57

C#自定義事件

2009-08-27 18:02:22

C#事件處理

2009-08-04 09:56:46

C#事件處理自定義事件

2009-08-24 13:40:58

C# Windows

2009-08-12 18:20:39

C#事件驅動程序

2009-09-07 15:21:38

Java與C#事件處理

2009-08-03 16:45:02

C#異步Socket

2009-08-20 09:30:03

C#開發WinForm

2009-08-17 16:32:34

C# Anonymou

2009-08-18 17:41:22

C# ListView

2009-08-31 13:18:09

C# IWebMess

2009-08-26 17:49:36

C# readonly

2009-08-03 18:08:39

C# ICloneab

2009-08-31 18:32:01

C# ListBoxE

2009-08-19 10:09:21

C#和C++

2021-02-06 10:27:45

C#函數參數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产91久久久久久久免费 | 激情综合五月 | 人人草天天草 | 精品国产鲁一鲁一区二区张丽 | 欧美日韩久久精品 | 久久久久网站 | 国内精品久久久久久久影视简单 | 亚洲国产精品一区二区三区 | 国产精品成人在线观看 | 成人在线不卡 | 国产一二三视频在线观看 | 黄色在线免费观看 | 蜜桃av人人夜夜澡人人爽 | 亚洲高清久久 | 久久美女网 | 国产精品777一区二区 | 精品欧美乱码久久久久久1区2区 | 国产成人精品一区二三区在线观看 | 精品一区二区久久久久久久网站 | 久久草视频| 国产91视频一区二区 | 91在线免费观看 | 国产精品一区三区 | 精品av| 日本成人在线观看网站 | 99re在线播放 | 另类专区成人 | 亚洲精品国产第一综合99久久 | 免费观看a级毛片在线播放 黄网站免费入口 | 天天拍天天射 | 国产日韩欧美 | 亚洲精品专区 | 夜夜骑首页 | 免费成人高清在线视频 | 亚洲精品久久久 | 91色综合 | 综合婷婷| 成人国产午夜在线观看 | 亚洲欧美日韩一区二区 | 欧美专区在线 | 国产精品欧美一区二区三区 |