1. <bdo id="8zfej"></bdo>
    <li id="8zfej"><meter id="8zfej"><th id="8zfej"></th></meter></li>

    南京北大青鳥

    全國咨詢電話:15195455103

    三分鐘了解北大青鳥
    當前位置:南京北大青鳥 > 學習園地 > 編程技巧

    .NET自定義事件小結

    來源:南京北大青鳥張府園校區? ? ? 作者:IT教育 ? ??

    關于事件各位應該都不陌生,相信每個程序員都可以拍著胸脯說“事件?我知道啊~”,可如何自定義事件?也許有人心中就不是那么底氣十足了。

    關于事件各位應該都不陌生,相信每個程序員都可以拍著胸脯說“事件?我知道啊~”,可如何自定義事件?也許有人心中就不是那么底氣十足了。還是老規矩吧,高手繞行~

    用很多地方都被引用到泛濫的一個例子來寫吧,始作俑者就不去深究了。描述是這樣的:小偷進入時,事件發送者(貓)發送貓叫事件(自定義),(事件接收者)主人訂閱貓叫事件并處理(抓住小偷),事件的參數傳遞的是小偷的數量。

    下面就給出實現的具體步驟---已經在代碼注釋中標明,以供各位博友抽象出自定義事件的流程。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace 自定義事件
    {
        //http://www.cnblogs.com/DebugLZQ
        //自定義事件步驟的示例代碼

        //0.定義事件傳遞的參數
        class AlarmEventArgs : EventArgs
        {
            public  int numberOfThief;
            public AlarmEventArgs(int n)
            {
                numberOfThief = n;
            }
        }
        //事件的發出者
        class Dog
        {
            //1.聲明事件的委托
            public delegate void AlarmEventHandler(Object sender, AlarmEventArgs e);
            //2.聲明事件
            public event AlarmEventHandler Alarm;
            //3.引發事件的函數
            public void OnAlarm(AlarmEventArgs e)
            {
                if (this.Alarm != null)
                {
                    Console.WriteLine("The dog is Wangwang...");
                    this.Alarm(this, e);               
                }
            }
        }
        //事件的訂閱者
        class Host
        {
            //4.訂閱事件
            public Host(Dog dog)
            {
                dog.Alarm += new Dog.AlarmEventHandler(HostHandleEvent);
            }
            //5.事件處理程序
            public void HostHandleEvent(Object sender, AlarmEventArgs e)
            {
                Console.WriteLine("Host caught the thief! The sum is "+e.numberOfThief);
            }
        }
       
        class Program
        {
            static void Main(string[] args)
            {
               
                Console.WriteLine("Program is running...");

                Dog dog = new Dog();
                Host host = new Host(dog);

                Console.WriteLine("Someone is coming...");
                //6.在合適的時候引發事件
                AlarmEventArgs alarmEventArgs = new AlarmEventArgs(3);
                dog.OnAlarm(alarmEventArgs);

                Console.ReadKey();
            }
        }
    }

    程序運行結果如下:

    北大青鳥軟件學校職業教育

    例子很簡單,我是按照順序寫的,在代碼中也有詳細的步驟注釋,就不多講了。一般經驗來講,自定義的東西往往是很有用的,而往往也不是人人能夠掌握。


    分享到:
    近期文章

    搶試聽名額

    名額僅剩66名

    教育改變生活

    WE CHANGE LIVES

    主站蜘蛛池模板: 伊人色综合久久88加勒| 国产精品亚洲综合专区片高清久久久 | 国产成人综合野草| 五月天婷五月天综合网在线| 久久精品综合一区二区三区| 狠狠色丁香婷综合久久| 91精品国产综合久久四虎久久无码一级| 亚洲综合校园春色| 狠狠色丁香久久婷婷综合五月 | 色老头综合免费视频| 久久综合九色综合97_久久久| 久久99国产综合精品女同| 色欲香天天综合网无码| 久久一日本道色综合久| 丁香五月网久久综合| 97久久天天综合色天天综合色| 亚洲精品第一国产综合精品99 | 国产成人亚洲综合一区| 亚洲伊人成无码综合网| 日韩亚洲国产综合高清| 狠狠色婷婷综合天天久久丁香| 天天综合天天看夜夜添狠狠玩| 色综合天天综合给合国产| 亚洲av综合avav中文| 久久综合九色综合91| 久久综合狠狠综合久久97色| 色综合久久久无码中文字幕| 亚洲第一综合天堂另类专| 国产精品亚洲综合五月天| 五月婷婷激情综合| 色综合久久久无码网中文| 久久婷婷午色综合夜啪 | 国产综合亚洲专区在线| 亚洲色偷偷狠狠综合网| 国产成人亚洲综合无码| 狠狠色综合久久久久尤物| 国产亚洲欧洲Aⅴ综合一区 | 欧美激情综合亚洲一二区| 色综合视频一区中文字幕| 色综合合久久天天给综看| 狠狠人妻久久久久久综合蜜桃|