• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 17,  comments - 2,  trackbacks - 0

            在 .Net 中實現(xiàn)自定義事件

             

              .Net 中的自定義事件,其實是利用委托實現(xiàn),大概可以分為以下幾個步驟:
            1、定義事件傳送的 EventArgs ,當然也可以直接使用系統(tǒng)的 EventArgs。
            2、定義該事件類型的委托。
            3、定義事件的處理方法。
            4、在需要的地方拋出事件,拋出的事件會在外部被捕捉到。
            我們以一個簡單的計算程序為例講解,該程序?qū)崿F(xiàn)計算兩個給定數(shù)字的和,當結(jié)果<=100時,正常計算,但結(jié)果>100時,觸發(fā)事件。然后我們在計算方法外捕捉該事件。這就是整個自定義事件及捕捉的過程。
            代碼如下,說明請查看注釋:

            1. // Step-1: 首先定義一個新的 EventArgs ,其中包括一個屬性,用于傳送超過100的結(jié)果值
            2. // 要注意的是:該類要繼承自系統(tǒng)的 EventArgs 類。需要多個屬性時定義方法與 HighValue 類似。
            3. class LevelHighArgs : EventArgs
            4. {
            5.         int _highValue = 0;
            6.         public int HighValue
            7.         {
            8.             get { return _highValue; }
            9.             set { _highValue = value; }
            10.         }
            11.         public LevelHighArgs(int _highValue)
            12.         {
            13.             this._highValue = _highValue;
            14.         }
            15. }
            16.     
            17.   // Step-2: 處理類。在該類中定義委托,和事件處理方法。
            18.   class AddTowInt
            19.   {
            20.        // 委托定義
            21.         public delegate void LevelHigh(object sender, LevelHighArgs e);
            22.        // 委托類型的事件處理方法
            23.         public event LevelHigh OnLevelHigh;
            24.         int _addedValue = 0;
            25.         public int AddedValue
            26.         {
            27.             get { return _addedValue; }
            28.             set { _addedValue = value; }
            29.         }
            30.         public AddTowInt()
            31.         { }
            32.         public void DoAdd(int a1, int a2)
            33.         {
            34.             _addedValue = a1 + a2;
            35.             if (_addedValue > 100)
            36.             {
            37.                 LevelHighArgs lha = new LevelHighArgs(_addedValue - 100);
            38.                 
            39.                 // 在結(jié)果 > 100 時,拋出事件
            40.                 OnLevelHigh(this, lha);
            41.             }
            42.         }
            43.  }
            44.     
            45.     // 使用及事件的捕捉
            46. class Program
            47. {
            48.         static void Main(string[] args)
            49.         {
            50.          // 計算程序?qū)ο?/span>
            51.             AddTowInt ati = new AddTowInt();
            52.             // 注冊事件處理程序
            53.             ati.OnLevelHigh += new AddTowInt.LevelHigh(ati_OnLevelHigh);
            54.             // 傳送測試數(shù)據(jù)。此時結(jié)果為 101 會觸發(fā)事件,可換成 23, 77 調(diào)用會看到事件沒有觸發(fā)。
            55.             ati.DoAdd(23, 78);
            56.             Console.WriteLine(ati.AddedValue);
            57.             Console.ReadLine();
            58.         }
            59.         static void ati_OnLevelHigh(object sender, LevelHighArgs e)
            60.         {
            61.          // 此處 e 中可以看到有一個 HighValue 屬性,該值就是我們定義在 LevelHighArgs 中的屬性
            62.             Console.WriteLine("結(jié)果已經(jīng)超過 100: " + e.HighValue);
            63.         }
            64. }

            posted on 2008-11-03 00:58 BeyondCN 閱讀(511) 評論(0)  編輯 收藏 引用 所屬分類: .NET
            久久无码精品一区二区三区| 91精品国产综合久久香蕉| 久久久久久亚洲精品不卡| 日日狠狠久久偷偷色综合0| 一级女性全黄久久生活片免费| 99久久99久久精品国产片果冻| 亚洲中文字幕无码久久2017| 精品久久久久久国产91| 久久精品亚洲精品国产欧美| 久久人人爽人人爽人人片AV不| 国产精品99久久久久久人| 日本精品久久久久影院日本| 亚洲精品无码久久一线| 成人亚洲欧美久久久久| 人妻无码精品久久亚瑟影视| 亚洲人成网亚洲欧洲无码久久 | 久久综合九色综合精品| 一级做a爱片久久毛片| 中文字幕热久久久久久久| 99久久99久久精品国产片| 中文字幕乱码人妻无码久久 | 亚洲精品国产自在久久| 99久久人妻无码精品系列| 国产精品乱码久久久久久软件 | 久久精品极品盛宴观看| 色综合久久久久| 久久亚洲精精品中文字幕| 色欲综合久久躁天天躁| 91精品国产91久久久久久青草 | 久久九九精品99国产精品| 要久久爱在线免费观看| 国产精品免费久久久久电影网| 国产成人久久精品激情| 亚洲国产一成人久久精品| 亚洲天堂久久久| 中文字幕久久精品| 色综合久久88色综合天天 | 国产精品亚洲综合专区片高清久久久 | 一本大道久久东京热无码AV| 久久综合视频网站| 欧美久久亚洲精品|