位置:首頁(yè) > 軟件操作教程 > 編程開(kāi)發(fā) > C# > 問(wèn)題詳情

在C#中創(chuàng)建和使用事件的步驟

提問(wèn)人:劉冬梅發(fā)布時(shí)間:2020-10-13

1. 為事件創(chuàng)建一個(gè)委托類(lèi)型

     所有事件是通過(guò)委托來(lái)激活的,其返回值類(lèi)型一般為void型。為事件創(chuàng)建一個(gè)委托類(lèi)型的語(yǔ)法格式如下:

delegate void 委托類(lèi)型名([觸發(fā)事件的對(duì)象名,事件參數(shù)]);

     例如,以下語(yǔ)句創(chuàng)建一個(gè)委托類(lèi)型mydelegate,其委托的事件處理方法返回類(lèi)型為void,不帶任何參數(shù):

     public delegate void mydelegate();

2. 創(chuàng)建事件處理的方法

      當(dāng)事件觸發(fā)時(shí)要調(diào)用事件處理方法,需設(shè)計(jì)相應(yīng)的事件處理方法,可以將它放在單獨(dú)的類(lèi)中,也可以放在觸發(fā)事件的類(lèi)中。

     例如,以下設(shè)計(jì)一個(gè)包含事件處理方法的單獨(dú)類(lèi)   

    class MyEventHander

    {   public void OnHandler1()

         {

              Console.WriteLine("調(diào)用OnHandler1方法");

         }

}

3. 聲明事件

      事件是類(lèi)成員,以關(guān)鍵字event聲明,其一般語(yǔ)法格式如下:

      [修飾符]  event 委托類(lèi)型名 事件名;

     其中,“修飾符”指出類(lèi)的用戶(hù)訪問(wèn)事件的方式,可以為public 、private、protected、internal、protectedinternal、static或virtual等。

      一般在聲明事件的類(lèi)中包含觸發(fā)事件的方法。例如,以下MyEvent類(lèi)包含事件聲明和觸發(fā)該事件的方法:

      MyEvent                  //事件類(lèi)

      { public event mydelegate1 Event1; //聲明事件

public void FireEvent1()    //調(diào)用這個(gè)方法來(lái)觸發(fā)事件Event1

              {     if(Event1 != null)

              {

          Event1();            //Event1事件發(fā)生

                }

}

      }

4. 通過(guò)委托對(duì)象來(lái)調(diào)用被包含的方法

      向類(lèi)事件(列表)中添加事件處理方法中的一個(gè)委托,這個(gè)過(guò)程稱(chēng)為訂閱事件,這個(gè)過(guò)程通常是在主程序中進(jìn)行的,首先必須聲明一個(gè)包含事件的類(lèi)的對(duì)象,然后將事件處理方法和該對(duì)象關(guān)聯(lián)起來(lái),其格式如下:

      事件類(lèi)對(duì)象名.事件名+=new 委托類(lèi)型名(事件處理方法);

     其中,還可以使用“-=”、“+”、“-”等運(yùn)算符添加或刪除事件處理方法。最后調(diào)用觸發(fā)事件的方法便可觸發(fā)事件。

    例如,以下語(yǔ)句就是觸發(fā)前面創(chuàng)建的事件Event1,并在屏幕上顯示“調(diào)用OnHandler1方法”:

     MyEvent b = new MyEvent();

     MyEventHander a = new MyEventHander();

     b.Event1 += new mydelegate1(a.OnHandler1);

          //把方法OnHandler1添加到事件列表中

     b.FireEvent1();     //調(diào)用觸發(fā)事件的方法

繼續(xù)查找其他問(wèn)題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部