六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

C#事件機制歸納(下)

[摘要]3.C#中預定義事件處理方式 學習事件,我覺得最不好理解的就是C#中預定義了事件,使我才開始學習事件時一頭霧水。在查了些資料后,終于弄明白了一些,如下: EventArgs是包含事件數據的類的基類,用于傳遞事件的細節。 EventHandler是一個委托聲明如下(其在.Net類庫中如下聲明...
  3.C#中預定義事件處理方式
    學習事件,我覺得最不好理解的就是C#中預定義了事件,使我才開始學習事件時一頭霧水。在查了些資料后,終于弄明白了一些,如下:
EventArgs是包含事件數據的類的基類,用于傳遞事件的細節。
EventHandler是一個委托聲明如下(其在.Net類庫中如下聲明的)
public delegate void EventHandler( object sender , EventArgs e ) 所以,所有形如: 
void 函婁名(object 參數名,EventArgs 參數名);
的函數都可以作為Control類的Click事件響應方法了。如下面所定義的一個事件響應方法:
private void button1_Click(object sender, System.EventArgs e)
參數object sender表示引發事件的對象,(其實這里傳遞的是對象的引用,如果是button1的click事件則sender就是button1)System.EventArgs e 代表事件的相應信息,如鼠標的x,y值等。
下面我們研究一下Button類看看其中的事件聲明,以Click事件為例。
public event EventHandler Click;
這里定義了一個EventHandler類型的事件Click
private void button1_Click(object sender, System.EventArgs e)
         {
                   ...
             }
這是我們和button1_click事件所對應的方法。注意方法的參數符合委托中的簽名(既參數列表)。那我們怎么把這個方法和事件聯系起來呢,請看下面的代碼。
this.button1.Click += new System.EventHandler(this.button1_Click); (其實button1.Click 為System.EventHandler委派的實例事件。與委派中委派實例委托給某一方法非常相似)
把this.button1_Click方法綁定到this.button1.Click事件。
 
 
4.事件的參數的使用。
using System;
 
class Class1
{
       static void Main()
       {
               Student s1=new Student();
               s1.Name ="Student1";
               Student s2=new Student();
               s2.Name ="Student2";
              s1.RegisterOK +=new Student.DelegateRegisterOkEvent(Student_RegisterOK);
               s2.RegisterOK +=new Student.DelegateRegisterOkEvent(Student_RegisterOK);
 
               //當Register方法一執行,觸發RegisterOK事件
               //RegisterOK事件一觸發,然后執行Student_RegisterOK方法
               s1.Register();  
              s2.Register();
              Console.ReadLine();
       }
       static void Student_RegisterOK(RegisterOkArgs e)
       {
              Console.WriteLine(e.EventInfo);
       }
}
 
class Student
{
       public delegate void DelegateRegisterOkEvent(RegisterOkArgs e);
       public event DelegateRegisterOkEvent RegisterOK;
       public string Name;
       public void Register()
       {
              Console.WriteLine("Register Method");
              RegisterOK(new RegisterOkArgs("Student Name: "+Name));
       }
}
class RegisterOkArgs:EventArgs
{
       public string EventInfo;
       public RegisterOkArgs(string eventInfo):base()
       {
              this.EventInfo =eventInfo;
       }
}



主站蜘蛛池模板: 天天干亚洲 | 日韩在线视频免费看 | 欧美特黄一区二区三区 | 亚洲www在线 | 午夜色婷婷| 日韩一级高清 | 野外三级国产在线观看 | 欧美亚洲另类色国产综合 | 午夜激情福利视频 | 日本高清免费在线视频 | 亚洲大片在线观看 | 日韩毛片高清在线看 | 色爱区综合激情五月综合激情 | 五福影院凹凸一区二区 | 亚洲国产精品久久婷婷 | 日本视频高清 | 亚洲色欲色欲www在线观看 | 欧洲vps一级视频 | 亚洲免费专区 | 天天躁夜夜躁狂狂躁综合 | 天天插天天操天天射 | 婷婷综合激情网 | 天天干天天澡 | 亚洲日本va中文字幕 | 天天av天天翘天天综合网 | 亚洲美女视频一区 | 在线国产91| 亚洲va久久久噜噜噜久久天堂 | 亚洲系列中文字幕一区二区 | 亚洲欧美综合在线观看 | 日本大学生免费一级一片 | 自拍偷拍 欧美日韩 | 影音先锋精品国产资源 | 亚洲欧美综合网站 | 偷偷操不一样的久久 | 最新国产网站 | 亚洲成色www久久网站 | 日韩手机在线观看 | 亚洲免费福利视频 | 一区二区视频在线播放 | 天天操天天操天天干 |