程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> C#基礎委托事件

C#基礎委托事件

編輯:.NET實例教程
using System;
public class Events
...{   static void Main()
    ...{   long speed;
        CheckSpeed myCheckSpeed=new CheckSpeed();//檢查速度的類實例
        DoSomeThing myDoSomeThing = new DOSomeThing();//生成提示降速類
        Console.Write("目前行車速度:");
        speed = long.Parse(Console.ReadLine());//輸入行車速度
        Console.WriteLine("");//下行委托指定給檢查速度的事件 myEvent到myDOSomeThing.SlowDown
        DefaultEvents myDefaultEvent = new DefaultEvents();
        myCheckSpeed.myEvent += new SpeedCheckHandler(myDefaultEvent.DefaultEvent);
        myCheckSpeed.myEvent += new SpeedCheckHandler(myDOSomeThing.SlowDown);
        myCheckSpeed.myEvent += new SpeedCheckHandler(myDOSomeThing.DoRecord);//新增加一個委托到觸發事件的列表
        myCheckSpeed.CheckSpeedLimit(speed);//具有委托事件的類的方法,調用此方法就會觸發事件myEvent
        Console.ReadLine();
    }
}
public class SpeedCheckEventArgs : EventArgs//類CheckSpeed事件的一個參數類
...{   private long speed;//事件參數e
 public SpeedCheckEventArgs(long speed)  ...{        this.speed = speed;    }
    public long getSpeed                    ...{        get ...{ return speed; }    }
    public string WarningMessage            ...{        get ...{ return ("警告:行車超過速度界限!!"); }    }
}
//--------------------------聲明委托--------------------------------------
public delegate void SpeedCheckHandler(object sender,SpeedCheckEventArgs e);
public class CheckSpeed//事件參數來源sender
...{   //-----------------聲明事件其定義在SlowDown----------------------
    public event SpeedCheckHandler myEvent;
    public void CheckSpeedLimit(long speed)//觸發事件的方法
    ...{   if (speed > 60)
   ...{   //產生事件參數e實例
            SpeedCheckEventArgs speedsArgs = new SpeedCheckEventArgs(speed);
            myEvent(this, speedsArgs);//觸發類事件調用SlowDown
        }
        else  Console.WriteLine("您目前的速度正常.");
    }
}
public class DOSomeThing//超速事件的類
...{   public void SlowDown(object sender, SpeedCheckEventArgs e)//事件的實現相當於onClick的實現
    ...{   Console.WriteLine(e.WarningMessage);
        Console.WriteLine("您目前的速度{0}已經超速,請降低油門,降低速度,避免危險!!",e.getSpeed);
        Console.WriteLine("正常的行車速度請降至60km/h!");
    }
    //記錄事件
    public void DoRecord(object sender, SpeedCheckEventArgs e)
    ...{
        Console.WriteLine("您的超速已被記錄,請到海潮路公路局繳納罰款!!速度:{0}km/h.",e.getSpeed);
    }
}
public class DefaultEvents
...{   //自己補充一個事件
    public void DefaultEvent(object sender, SpeedCheckEventArgs e) ...{ Console.WriteLine("超速沒有處理."); }


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved