精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

C#自定義事件是如何生成的

開發(fā) 后端
本文介紹了關(guān)于C#中的自定義事件生成步驟。目標(biāo):通過一個(gè)實(shí)例來按步驟說明C#自定義事件如何創(chuàng)建,引發(fā),接收和取消。

目標(biāo):通過一個(gè)實(shí)例來按步驟說明C#自定義事件如何創(chuàng)建,引發(fā),接收和取消。例子是一個(gè)窗體程序,一個(gè)按鈕和一個(gè)標(biāo)簽,點(diǎn)擊按鈕的時(shí)候就觸發(fā)一個(gè)事件得到當(dāng)前時(shí)間,如果秒是后30秒就輸出一個(gè)Wasn't a right time!!

創(chuàng)建一個(gè)事件類型:

1.新建一個(gè)窗體應(yīng)用程序,添加一個(gè)button和lebelInfo,name分別為buttonRaise和labelInfo。

2.定義一個(gè)委托:

在窗體類的聲明部分添加

  1. public delegate void ActionEventHandler(object sender, ActionCancelEventArgs e); 

這里我們聲明了一個(gè)新的委托類型ActionEventHandler,原因是我們后面要自己定制EventArg類(上面可見就是ActionCancelEventArgs類),方法名必須和委托匹配。

3.定義一個(gè)C#自定義事件:

在上面代碼后面加上,

  1. public static event ActionEventHandler Action; 

我們定義了一個(gè)叫Action的事件,事件定義的語法要求指定與事件相關(guān)的委托。

4.創(chuàng)建自己定義的EventArg類:

在程序中定義一個(gè)類代碼如下:

  1. namespace WindowsApplication1  
  2. {  
  3.    public class ActionCancelEventArgs : System.ComponentModel.CancelEventArgs  
  4.    {  
  5.       string message = String.Empty;  
  6.  
  7.       public ActionCancelEventArgs() : base() { }  
  8.  
  9.       public ActionCancelEventArgs(bool cancel) : base(cancel) { }  
  10.  
  11.       public ActionCancelEventArgs(bool cancel, string message)  
  12.          : base(cancel)  
  13.       {  
  14.          this.message = message;  
  15.       }  
  16.  
  17.       public string Message  
  18.       {  
  19.          get { return message; }  
  20.          set { message = value; }  
  21.       }  
  22.    }  
  23. }  
  24.  

這個(gè)新類ActionCancelEventArgs實(shí)際上派生于CancelEventArgs,而CancelEventArgs派生于EventArgs。CancelEventArgs添加了Cancel屬性,是一個(gè)bool類型,它通知sender對象,接收器希望取消或者停止事件的處理。我們?yōu)锳ctionCancelEventArgs添加一個(gè)message屬性,包含事件處理時(shí)候傳遞一個(gè)事件處理狀態(tài)的字符串。

所有的基于EventArgs的類都負(fù)責(zé)在發(fā)送器和接收器之間來回傳送事件的信息。大多情況下,EventArgs類中使用的信息都被事件處理程序中的接收器對象(這里后來的ActionCancelEventArgs ev)所使用。但是有時(shí)候,事件處理程序可以把信息添加到EventArg類中,使之可以用于發(fā)送器。我們這里就是這樣做的其實(shí)(接收器根據(jù)狀態(tài)把信息傳給發(fā)送器中的message屬性了)。

引發(fā)事件:

1.通過一種動(dòng)作來激活A(yù)ction事件(我們就用點(diǎn)擊按鈕buttonRaise):

先為buttonRaise按鈕添加一個(gè)點(diǎn)擊事件處理程序:

  1. private void buttonRaise_Click(object sender, EventArgs e) 

2.再在處理程序中用正確的參數(shù)調(diào)用事件:添加如下代碼,

  1. ActionCancelEventArgs cancelEvent = new ActionCancelEventArgs();  
  2. OnAction(this, cancelEvent); 

就是先創(chuàng)建一個(gè)新的事件數(shù)據(jù)類型ActionCancelEventArgs,再把它當(dāng)作參數(shù)傳遞給前面定義的那個(gè)Action事件的處理程序(引發(fā)事件是通過Action(this, cancelEvent)的,但是我們通過OnAction()來調(diào)用之)。這里我們的Action事件就相當(dāng)我們.Net中的Move,Click事件一樣的了,但是目前它還是空的,如果引發(fā)了這個(gè)事件就會(huì)產(chǎn)生一個(gè)空引用異常,所以我們?nèi)绻谄渌念愔邪袮ction事件定義為基事件,則只要引發(fā)了Action就要定義相關(guān)的事件處理程序的。

3.我們定義一個(gè)叫OnAction的函數(shù)引發(fā)事件,(加上On是命名約定)

  1. protected void OnAction(object sender, ActionCancelEventArgs e)  
  2. {  
  3.     if (Action != null)    //捕獲空引用錯(cuò)誤  
  4.         Action(sender, e);  

如果派生一個(gè)包含該方法和事件的新類,就必須重寫OnAction方法,并且在重寫代碼中調(diào)用base.OnAction(),引發(fā)此事件。

接受事件,并且處理之:

1.下面就是定義一個(gè)新類BusEntity了:

  1. namespace WindowsApplication1  
  2. {  
  3.    public class BusEntity  
  4.    {  
  5.       string time = String.Empty;  
  6.  
  7.       public BusEntity()  
  8.       {  
  9.          Form1.Action += new Form1.ActionEventHandler(Form1_Action);  
  10.       }  
  11.  
  12.       private void Form1_Action(object sender, ActionCancelEventArgs e)  
  13.       {  
  14.          e.Cancel = !DoActions();  
  15.          if (e.Cancel)  
  16.             e.Message = "Wasn't the right time.";  
  17.       }  
  18.  
  19.       private bool DoActions()  
  20.       {  
  21.          bool retVal = false;  
  22.          DateTime tm = DateTime.Now;  
  23.  
  24.          if (tm.Second <  30)  
  25.          {  
  26.             time = "The time is " + DateTime.Now.ToLongTimeString();  
  27.             retVal = true;  
  28.          }  
  29.          else 
  30.             time = "";  
  31.  
  32.          return retVal;  
  33.       }  
  34.  
  35.       public string TimeString  
  36.       {  
  37.          get { return time; }  
  38.       }  
  39.    }  
  40. }  
  41.  

其中關(guān)鍵代碼:

1.構(gòu)造函數(shù)中聲明了Form1.Action事件的處理程序(注冊事件):

  1. Form1.Action += new Form1.ActionEventHandler(Form1_Action); 

注意這里注冊的是Form1中定義的那個(gè)Action事件,不是其它地方定義的。

2.Action事件的處理程序(在前面Form1類中通過OnAction()引發(fā)的):

  1. private void Form1_Action(object sender, ActionCancelEventArgs e) 

其中的處理是通過調(diào)用DoAction函數(shù)來的。它返回一個(gè)bool值,并且將狀態(tài)信息賦值給事件數(shù)據(jù)類型ActionCancelEventArgs的參數(shù)的message成員。

3.完善Form1程序:

(1)類中要先新建成員private BusEntity busEntity;

(2)構(gòu)造函數(shù)中初始化之:busEntity = new BusEntity();

(3)完善點(diǎn)擊按鈕的事件處理,引發(fā)并且處理Action事件:

  1. private void buttonRaise_Click(object sender, EventArgs e)  
  2. {  
  3.     ActionCancelEventArgs cancelEvent = new ActionCancelEventArgs();  
  4.     OnAction(this, cancelEvent);  
  5.     if (cancelEvent.Cancel)  
  6.         labelInfo.Text = cancelEvent.Message;  
  7.     else 
  8.         labelInfo.Text = busEntity.TimeString;  
  9. }  

在補(bǔ)充說明:這里創(chuàng)建了ActionCancelEventArgs對象,接著引發(fā)了Action事件,并且傳遞了新建的ActionCancelEventArgs對象cancelEvent。在調(diào)用OnAction方法,引發(fā)事件的時(shí)候,BusEntity對象中Action事件處理程序的代碼就會(huì)執(zhí)行。如果還有其他對象注冊了事件,它們同樣會(huì)執(zhí)行。記住:如果其他對象也處理了事件Action,它們也會(huì)看到同一個(gè)ActionCancelEventArgs對象。如果需要確定是哪個(gè)對象取消了事件,而且如果多個(gè)對象取消了事件,就要在ActionCancelEventArgs類中再包含某種基于列表的數(shù)據(jù)結(jié)構(gòu)。

取消事件:

在與委托一起注冊的處理程序執(zhí)行完之后,就可以查詢ActionCancelEventArgs對象,并且確定它是否被取消了。也就是下面代碼:

  1. if (cancelEvent.Cancel)  
  2.     labelInfo.Text = cancelEvent.Message;  
  3. else 
  4.     labelInfo.Text = busEntity.TimeString; 

總結(jié):上面就是我個(gè)人通過《Professional C# 2005 with .Net 3.0》一書中的相關(guān)部分,總結(jié)出的如何利用事件和事件中基于EventArgs的對象,在應(yīng)用程序中傳遞信息的,生成C#自定義事件。程序示例來源于此教程。

【編輯推薦】

  1. C#自定義控件的開發(fā):Pin和Connector
  2. 比較C#自定義控件的property(屬性)和/attribute(性質(zhì))
  3. C#組件開發(fā):COM和.NET對象之間的互操作
  4. 介紹.NET平臺、C#和ASP.NET
  5. C# Attributes:定義設(shè)計(jì)期信息

     

責(zé)任編輯:book05 來源: blog.sina
相關(guān)推薦

2009-08-04 09:56:46

C#事件處理自定義事件

2009-08-04 12:56:51

C#自定義事件

2009-09-03 15:46:57

C#自定義事件

2009-08-04 12:40:34

c#自定義事件

2009-08-04 13:53:58

C#委托類C#事件

2009-08-04 13:23:40

C# 自定義控件dll

2021-06-17 06:52:37

C#自定義異常

2009-08-04 08:58:01

C#自定義特性

2009-08-03 16:37:49

C#異常類

2009-08-03 13:34:06

自定義C#控件

2009-08-28 17:45:19

C#自定義數(shù)據(jù)

2009-08-03 13:39:46

C#自定義用戶控件

2009-08-17 17:24:02

C#自定義消息框

2009-08-04 13:07:46

C#自定義快捷鍵

2009-08-12 14:53:50

C#類型轉(zhuǎn)換函數(shù)

2024-09-11 14:46:48

C#旋轉(zhuǎn)按鈕

2009-08-05 17:03:37

C#自定義控件

2009-08-07 17:57:26

C#定義事件應(yīng)用

2009-08-03 14:46:12

C#自定義控件

2009-08-05 17:15:27

C#自定義按鈕
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

日本精品一区二区在线观看| 国产va在线播放| 在线成人视屏| 日韩美女啊v在线免费观看| 91精品国自产在线观看| 精品少妇一二三区| 国产一区二区三区日韩精品| 欧美一区二区三区四区久久| www.com毛片| 黄在线免费看| 91蜜桃传媒精品久久久一区二区| 国产日韩欧美在线观看| 成年人免费看毛片| 91精品国产自产拍在线观看蜜| 精品国产乱码久久| 亚洲天堂国产视频| 91精品论坛| 一区二区在线观看免费 | 欧美午夜小视频| 成人性爱视频在线观看| 99麻豆久久久国产精品免费| 91免费看片在线| 亚洲av无码精品一区二区| 欧美亚洲不卡| 日韩一区二区三区国产| jizz日本免费| 国产精品久久久久久久久久白浆| 欧美日韩国产天堂| 青青青在线播放| 黄色软件视频在线观看| 亚洲免费av高清| 先锋影音亚洲资源| 美国成人毛片| 波多野结衣中文字幕一区| 成人观看高清在线观看免费| 免费的毛片视频| 99成人精品| 欧美激情免费视频| 午夜爽爽爽男女免费观看| 欧美日中文字幕| 亚洲视频视频在线| 黄色a一级视频| 国产精品自在线拍| 欧美日韩电影一区| 亚洲免费看av| 青青热久免费精品视频在线18| 欧美日韩中国免费专区在线看| 阿v天堂2018| 日韩av毛片| 一区二区成人在线视频| 免费在线黄网站| 金瓶狂野欧美性猛交xxxx| 一片黄亚洲嫩模| 成人在线免费观看视频网站| 肉肉视频在线观看| 一区2区3区在线看| 欧美久久久久久久久久久久久| 男女在线视频| 亚洲成av人片www| 黄色成人在线看| 在线高清av| 色久综合一二码| 激情网站五月天| 亚洲第一会所| 69久久夜色精品国产69蝌蚪网| 激情文学亚洲色图| 亚洲国产高清在线观看| 日韩女优毛片在线| 成人区人妻精品一区二 | 欧美一二三区| 岛国视频免费在线观看| 国产色产综合产在线视频| 亚洲免费在线精品一区| 成人a在线视频免费观看| 一区二区三区资源| 97国产在线播放| 精品91久久| 欧美人与z0zoxxxx视频| 男生和女生一起差差差视频| 国产精品xxxav免费视频| 国产丝袜一区二区| 内射一区二区三区| 亚洲激情不卡| 国产精品久久久久久久久久东京 | 精品少妇久久久久久888优播| 欧美不卡视频| 午夜精品在线视频| 欧美brazzers| 国产乱码精品一区二区三区忘忧草| 97中文在线| 日本高清中文字幕二区在线| 国产精品毛片高清在线完整版| 日韩精品福利片午夜免费观看| 女人高潮被爽到呻吟在线观看| 在线免费不卡视频| 青青草精品在线| 中文字幕精品影院| 久久99久久亚洲国产| 青青青国产在线| 国产麻豆视频精品| 日本高清不卡三区| 羞羞视频在线观看不卡| 色综合色综合色综合| 国产在线观看中文字幕| 亚洲人成网站77777在线观看| 久久九九免费视频| 波多野结衣 久久| 国产成人精品免费| 一区二区三区视频| 美女av在线免费看| 日韩美一区二区三区| 色欲AV无码精品一区二区久久| 国产精品激情电影| 国产免费观看久久黄| 裸体xxxx视频在线| 亚洲成人自拍偷拍| 亚洲小视频网站| 国产一区二区区别| 日本aⅴ大伊香蕉精品视频| 精品国产18久久久久久| 国产精品网站导航| 国产成人久久777777| 国产suv精品一区| 久久91亚洲人成电影网站| 依依成人在线视频| 久久免费午夜影院| 国产素人在线观看| 丁香5月婷婷久久| 欧美日韩国产成人高清视频| 91国在线视频| 国产精品美女久久久久久久久久久| 久久久999免费视频| av毛片精品| 欧美巨大黑人极品精男| 91在线公开视频| 中文在线免费一区三区高中清不卡| 波多野结衣家庭教师在线| 成人知道污网站| 欧美激情综合亚洲一二区| 精品国产999久久久免费| 亚洲激情在线激情| 青青草原播放器| 自拍偷拍欧美| 国产chinese精品一区二区| 91精品国产91久久久久久青草| 欧美久久久影院| 国产福利在线导航| 美女视频黄久久| 一个色的综合| 亚洲ww精品| 成年人精品视频| 国内精品久久久久久久久久久| 亚洲欧洲制服丝袜| www.偷拍.com| 好看的av在线不卡观看| 国产精品一区视频| 日本三级一区| 亚洲欧美视频在线| 伊人影院中文字幕| 亚洲青青青在线视频| 91丨porny丨九色| 亚洲性感美女99在线| 国产伦视频一区二区三区| а√天堂中文在线资源8| 亚洲欧洲日韩国产| 在线播放亚洲精品| 日韩毛片视频在线看| 色欲欲www成人网站| 亚洲黑丝一区二区| 欧美另类视频在线| 婷婷成人av| 欧美黑人国产人伦爽爽爽| 天天干视频在线观看| 色综合久久中文综合久久牛| 欧美日韩国产一二三区| 国产精品一区在线观看乱码| r级无码视频在线观看| 一区二区小说| 亚洲aⅴ男人的天堂在线观看| 黄色在线观看视频网站| 日韩毛片在线看| 在线免费观看av片| 亚洲国产aⅴ成人精品无吗| 国产乱了高清露脸对白| 日本成人中文字幕| 国产精品日韩三级| 国产一区网站| 成人欧美一区二区| 日本免费一区二区三区四区| 久久久国产成人精品| 无码精品黑人一区二区三区| 欧美日韩一区精品| 色网站在线播放| 国产精品看片你懂得| av无码一区二区三区| 蜜桃91丨九色丨蝌蚪91桃色| 日本阿v视频在线观看| 欧美一级本道电影免费专区| 成人毛片网站| 韩国精品视频在线观看| 97精品视频在线观看| 麻豆视频在线观看免费| 精品亚洲国产视频| 国产免费一区二区三区最新不卡| 欧美色另类天堂2015| 五月天色婷婷丁香| 久久久五月婷婷| 国产成人av无码精品| 精彩视频一区二区三区| 国产在线观看福利| 亚洲午夜一级| 中文字幕一区二区三区最新| 亚洲国产精品嫩草影院久久av| 97se亚洲综合| 日韩在线激情| 国产精品88a∨| 鲁鲁在线中文| 久久久久久国产三级电影| 黄色片免费在线观看| 亚洲天堂色网站| 天堂av在线免费| 精品久久人人做人人爰| 国产精品无码久久av| 在线观看免费一区| 九九精品免费视频| 韩曰欧美视频免费观看| 国产一级在线观看视频| 亚洲另类中文字| 小泽玛利亚一区| 国产精品网曝门| 亚洲高潮女人毛茸茸| 国产校园另类小说区| 色婷婷av777| 26uuu亚洲| aa片在线观看视频在线播放| www.日本不卡| 色哟哟无码精品一区二区三区| 国产麻豆成人精品| 国产精品拍拍拍| 视频一区中文字幕| 无码少妇一区二区三区芒果| 翔田千里一区二区| 欧美视频第一区| 久久精品123| 国产男女激情视频| 玖玖在线精品| 粉嫩虎白女毛片人体| 国产精品av免费观看| 欧美福利视频| 六月婷婷激情综合| 日韩一区二区免费看| 99精品在线免费视频| 久久精品毛片| 美女一区二区三区视频| 毛片av中文字幕一区二区| 男人的天堂最新网址| 国产一区三区三区| 中文字幕在线视频一区二区| 国产v综合v亚洲欧| 欧美日韩人妻精品一区在线| 972aa.com艺术欧美| 中文字幕在线看高清电影| 中文无字幕一区二区三区 | 国产精品999| 国产精品高潮久久| 91九色综合久久| 9l视频自拍蝌蚪9l视频成人| 精品无人区一区二区三区| 精品一区毛片| 中文字幕超清在线免费观看| 欧美日韩一区二区高清| 国产精品免费入口| 奇米精品一区二区三区在线观看| 涩涩网站在线看| 成人a区在线观看| 国产在线综合视频| 亚洲欧美一区二区久久| 激情五月色婷婷| 欧美日韩久久不卡| 亚洲春色一区二区三区| 亚洲女人被黑人巨大进入| 午夜毛片在线| 久久久免费在线观看| 日韩av中字| 亚洲a区在线视频| 亚洲欧洲免费| 精品91一区二区三区| 国产精品美女久久久| 中文字幕22页| 91麻豆成人久久精品二区三区| 99久久久无码国产精品不卡| 婷婷久久综合九色综合伊人色| 中文字幕欧美色图| 亚洲电影免费观看高清完整版在线观看 | 久久九九99视频| 中文字幕日韩久久| 99re亚洲国产精品| 在线观看美女av| 懂色aⅴ精品一区二区三区蜜月| 日韩美一区二区| 日韩欧美精品在线视频| 国产女人在线视频| 久久久久久久一区二区| 91成人在线| 久久av免费一区| 欧美日一区二区在线观看| 嫩草影院国产精品| 91网站在线播放| 久久国产精品二区| 欧美日韩国产在线观看| 国外av在线| 午夜精品免费视频| 视频在线亚洲| 在线观看一区二区三区三州| 先锋亚洲精品| av鲁丝一区鲁丝二区鲁丝三区| 尤物av一区二区| 97超碰人人草| 永久免费看mv网站入口亚洲| 国产免费拔擦拔擦8x高清在线人| 91传媒视频免费| 久久精品影视| 亚洲娇小娇小娇小| 国产欧美日本一区视频| 免费视频久久久| 国产偷亚洲偷欧美偷精品 | 国产精品xxx视频| 日韩美女国产精品| 黄页网站在线观看视频| 成人一区二区三区中文字幕| 精品国产乱码久久久久久鸭王1| 欧美日韩一区二区三区在线看| 精品99又大又爽又硬少妇毛片| 68精品久久久久久欧美| 国产精品网在线观看| 800av在线免费观看| 粉嫩蜜臀av国产精品网站| www.5588.com毛片| 欧美一级理论性理论a| 二区三区在线观看| 97超级碰碰| 国产精品99免费看| 2一3sex性hd| 欧美日韩中文字幕日韩欧美| 男人的天堂av高清在线| 国产成人精品国内自产拍免费看| 亚洲自拍电影| 三年中国国语在线播放免费| 国产欧美一区二区精品忘忧草| 国产情侣小视频| 深夜福利一区二区| 日韩第二十一页| 亚洲国产一二三精品无码| 成人永久免费视频| 日韩成人免费观看| 亚洲色图17p| 欧美日韩伦理一区二区| 9999在线观看| 国产成人在线观看免费网站| 久草视频精品在线| 日韩av在线免费| 精品3atv在线视频| 亚洲精品视频一区二区三区| 久久er99精品| 久久久久久久久久一区二区三区| 欧美电影免费提供在线观看| 国产乱码精品一区二三赶尸艳谈| 欧美精品国产精品久久久| 日本特黄久久久高潮| 91精品一区二区三区蜜桃| 精品va天堂亚洲国产| 亚洲三级欧美| 亚洲欧洲中文| 国产91丝袜在线18| 一级片视频在线观看| 日韩中文字幕av| 一区二区三区四区高清视频 | 亚洲天堂日韩电影| 国产精品va视频| 每日在线观看av| 国产无人区一区二区三区| 91尤物国产福利在线观看| 97视频人免费观看| 欧美电影《睫毛膏》| 极品白嫩的小少妇| 欧美在线小视频| 丁香影院在线| 亚洲五月六月| 成人aa视频在线观看| 成人一级免费视频| 色综合导航网站| 欧美色图国产精品| 中文字幕人妻一区| 欧美三级电影在线看| 9765激情中文在线| 国产精品久久成人免费观看| 99国产一区二区三精品乱码| 国产精品怡红院| 国产91在线播放九色快色| 午夜久久99|