• <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
            人妻少妇精品久久| 久久久久久国产精品免费免费 | 99久久国产热无码精品免费| 久久亚洲美女精品国产精品| 久久精品9988| 国产精品久久久久久久久久影院 | 久久久久无码中| 久久亚洲精品无码VA大香大香| 久久婷婷成人综合色综合| 久久久久久国产精品免费免费| 中文无码久久精品| 久久久久无码精品国产app| 亚洲精品无码久久久久去q| 国内精品欧美久久精品| 人妻精品久久无码区| 热综合一本伊人久久精品 | 熟妇人妻久久中文字幕| 久久无码国产| 狠狠色伊人久久精品综合网| 久久久久久无码Av成人影院| 久久人人爽人人澡人人高潮AV| 久久国产精品成人免费| 精品永久久福利一区二区| 伊人久久大香线蕉综合网站| 久久国产V一级毛多内射| 欧美久久精品一级c片片| 97久久超碰国产精品旧版| 国产成人精品综合久久久久| 99久久香蕉国产线看观香| 亚洲精品无码久久久| 久久久久综合国产欧美一区二区| 久久亚洲高清观看| 久久99国产亚洲高清观看首页| 久久婷婷五月综合色高清| 日本欧美久久久久免费播放网| 久久精品aⅴ无码中文字字幕不卡| 久久久久成人精品无码| 久久久久久亚洲精品不卡| 久久久久人妻一区精品果冻| 日本久久中文字幕| 国产精品久久久久久久久软件|