• <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 閱讀(512) 評論(0)  編輯 收藏 引用 所屬分類: .NET
            午夜精品久久影院蜜桃| 亚洲级αV无码毛片久久精品 | 狠狠色丁香婷婷综合久久来来去| 狠狠色噜噜狠狠狠狠狠色综合久久 | 日本WV一本一道久久香蕉| 久久精品桃花综合| 国产精品久久国产精麻豆99网站| 亚洲欧美精品伊人久久| 亚洲国产天堂久久综合| 国内精品久久久久久99蜜桃| 久久久久亚洲精品男人的天堂| 思思久久99热只有频精品66| 国内精品久久久久伊人av| 狠狠色丁香婷婷久久综合五月| 国产一级做a爰片久久毛片| 日韩久久无码免费毛片软件| 国产成人精品白浆久久69| 久久影院亚洲一区| 久久99中文字幕久久| 人妻无码久久一区二区三区免费| 久久久精品久久久久久| 久久亚洲高清观看| 精品久久人妻av中文字幕| 无码伊人66久久大杳蕉网站谷歌| 久久精品无码专区免费| 99久久www免费人成精品| 国产精品久久久久久福利漫画| 久久午夜夜伦鲁鲁片免费无码影视 | 久久精品免费网站网| 久久精品国产影库免费看| 久久久精品国产sm调教网站 | av无码久久久久不卡免费网站 | 色婷婷狠狠久久综合五月| 香蕉久久一区二区不卡无毒影院| 99久久国产热无码精品免费| 中文字幕乱码久久午夜| 午夜天堂av天堂久久久| 久久久久亚洲AV无码永不| 国内精品久久久久影院优| 狠狠色丁香婷综合久久| 久久93精品国产91久久综合|