一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - ASP.NET教程 - asp.net中c#自定義事件的實(shí)現(xiàn)方法詳解

asp.net中c#自定義事件的實(shí)現(xiàn)方法詳解

2019-12-13 09:49shichen2014 ASP.NET教程

這篇文章主要介紹了asp.net中c#自定義事件的實(shí)現(xiàn)方法,較為詳細(xì)的分析了自定義實(shí)現(xiàn)的各個步驟的具體實(shí)現(xiàn)思路與技巧,并給出了一個完整的實(shí)例總結(jié),具有一定的參考借鑒價值,需要的朋友可以參考下

本文實(shí)例講述了asp.netc#自定義事件的實(shí)現(xiàn)方法。分享給大家供大家參考。具體分析如下:

c#自定義事件分為六步,聲明關(guān)于事件的委托,聲明事件,編寫引發(fā)事件的函數(shù),事件處理,這里我們就來具體的介紹一下。

C#自定義事件的具體實(shí)現(xiàn)步驟如下:
1、聲明一個delegate:
 (用于事件的類型的定義)
如:

復(fù)制代碼代碼如下:
public delegate void 事件名稱EventHandler(object serder, EventArgs e);


事件名稱用你的自己的來代替,隨后的EventHandler是C#的建議命名規(guī)范,當(dāng)然如果你不想遵守,可以使用任何字符甚至可以不要。

 

如果你想自定義事件的參數(shù)EventArgs,你可以從這個類派生你自己的事件參數(shù)類,然后在delegate的聲明中,用你的參數(shù)類替換EventArgs

注:要全面了解自定義事件的原理,你需要學(xué)習(xí)有關(guān)delegate的知識。

2、在你的類中聲明一個事件,并且使用步驟1的delegate作為事件的類型:
public event 事件名稱EventHandler 事件名稱;

3、在你的類中需要觸發(fā)事件的方法中,添加事件觸發(fā)代碼

事件名稱(this, new EventArgs());  
或者:
if(事件名稱!=null)   事件名稱(this, new EventArgs());  //如果使用你自己的事件參數(shù)類,你可以用你的參數(shù)類事例替換new EventArgs(), 同時在你的參數(shù)類中保存你需要傳遞的數(shù)據(jù)。

4、C#自定義事件注冊:

事件注冊和普通的事件注冊沒有不同,也就是說如果一個外部的對象在你的事件被觸發(fā)的時候需要作出響應(yīng),那么你可以在外部了構(gòu)造器中(或者適當(dāng)?shù)牡胤剑κ录M(jìn)行注冊

帶有事件的類實(shí)例.事件名稱+= new 事件名稱EventHandler( 事件處理方法名稱);

5、編寫事件處理方法:

public void 事件處理方法名稱(object sender, EventArgs e){
//添加你的代碼

注:如果你在類中處理自己的觸發(fā)事件,你可以選擇C#自定義事件步驟4和5的方式,也就是注冊自己,也可以在觸發(fā)事件代碼中直接調(diào)用事件處理方法。
說了一堆了,下面我們來看個實(shí)例

復(fù)制代碼代碼如下:
namespace 自定義事件
{
    //自定義事件分為以下幾步:
    class Program
    {
        static void Main(string[] args)
        {
            //第六步:主函數(shù)調(diào)用
            Dog dog = new Dog();
            Host host = new Host(dog);
            DateTime now = new DateTime(2013,8,31,22,39,50);
            DateTime nigth = new DateTime(2013,8,31,22,40,0);
            Console.WriteLine("~~~~~~~~~時間開始走啊走啊~~~~~~~~~");
            while(now <nigth){
                Console.WriteLine("當(dāng)前時間:"+now);
                System.Threading.Thread.Sleep(1000);
                now = now.AddSeconds(1);
            }
            Console.WriteLine("~~~~~~~我是小偷,我來了~~~~~~~~~~~~");
            dog.OnAlarn();
        }
    }
    class Dog {
        //第一步:聲明關(guān)于事件的委托
        public delegate void AlarnEven(object sender,EventArgs e);
        //第二步:聲明事件
        public event AlarnEven Alarn;
        //第三步:編寫引發(fā)事件的函數(shù)
        public void OnAlarn() {
            if(this.Alarn!=null){
                Console.WriteLine("n狗報(bào)警:有小偷進(jìn)來了.汪汪汪~~~~~~~~~");
                this.Alarn(this,new EventArgs());
            }
        }
    }
    class Host { 
        //第四:編寫事件的處理程序
        void HostAlarn(object sender, EventArgs e) 
        { Console.WriteLine("主人:抓住小偷啦..!"); }
        //第五步:注冊事件的處理程序
        public Host(Dog dog) {
            dog.Alarn += new Dog.AlarnEven(HostAlarn);
        }
    }
}

 

希望本文所述對大家的asp.net程序設(shè)計(jì)有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 青草网址 | 国产福利不卡视频在免费 | 国产午夜精品一区二区三区 | 欧美作爱福利免费观看视频 | 私人黄色影院 | 人人爽人人香蕉 | 性色欲情网站IWWW九文堂 | 媳妇和公公小说 | 男女车车好快的车车免费网站 | 国产精品青青青高清在线 | 精品性久久 | 午夜精品在线 | 好逼天天有 | 欠操h| 天天操天天干天天舔 | 操岳母娘 | 国产90后美女露脸在线观看 | 1024国产看片在线观看 | 国内精品一区二区三区东京 | 91精品国产9l久久久久 | 色戒完整版 | 成年人免费观看的视频 | 91视频破解 | 草草草草视频 | 精品女同一区二区三区免费站 | 99久久综合久中文字幕 | 欧美亚洲国产一区二区三区 | 久久综合老色鬼网站 | 日韩高清在线高清免费 | 99久久精品国产免看国产一区 | 手机国产乱子伦精品视频 | 午夜理论片日本中文在线 | 丝袜捆绑调教视频免费区 | 新新电影理论中文字幕 | 成人精品一区二区三区中文字幕 | 亚洲欧美一 | 男女做污事 | 俄罗斯一级大片 | 超碰97 | 好男人好资源在线观看 | 亚洲精品tv久久久久久久久久 |