• <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
            久久免费线看线看| 亚洲国产日韩欧美综合久久| 久久久久无码精品| 一本一道久久精品综合| 乱亲女H秽乱长久久久| 无码国内精品久久综合88 | 久久久久青草线蕉综合超碰| 久久国产精品免费一区| 激情五月综合综合久久69| 7国产欧美日韩综合天堂中文久久久久 | 亚洲狠狠久久综合一区77777| 国产V综合V亚洲欧美久久| 国产成年无码久久久免费| 久久精品国产亚洲AV久| 久久久亚洲欧洲日产国码二区| 久久精品国产99久久久| 久久午夜电影网| 久久久免费观成人影院| 久久婷婷午色综合夜啪| 五月丁香综合激情六月久久| 精品久久人妻av中文字幕| 国产成人精品久久亚洲高清不卡 | 国产亚洲美女精品久久久| 四虎亚洲国产成人久久精品| 国产A级毛片久久久精品毛片| 久久国产乱子伦免费精品| 久久久久国产精品| 久久久久国产视频电影| 7777久久久国产精品消防器材 | 色婷婷狠狠久久综合五月| 久久亚洲精品无码VA大香大香| 国产91色综合久久免费| 久久精品亚洲福利| 久久久无码精品亚洲日韩蜜臀浪潮 | 奇米综合四色77777久久| 亚洲国产精品一区二区久久| 久久综合久久综合亚洲| 97久久精品人妻人人搡人人玩| 国产免费久久精品99久久| 久久婷婷五月综合国产尤物app | 久久久精品久久久久久|