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

理解C#中事件和委托的例子

編輯:關於C#

事件

在發生其他類或對象關注的事情時,類或對象可通過事件通知它們。發送(或引發)事件的類稱為“發行者”,接收(或處理)事件的類稱為“訂戶”。

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
Car car = new Car();
car.OnOilWarning += new OilEventHandler(OilWarning); //關聯事件
car.FillOil(5);
car.Startup();
}
public void OilWarning(object sender, OilEventArgs e)
{
MessageBox.Show("監測到了汽車油量異常,當前油量為:" + e.OilMass);
}
}
//事件代理,可以理解為這個事件要傳送什麼內容
//事件參數我們使用自己寫的 OilEventArgs
public delegate void OilEventHandler(object sender, OilEventArgs e);
//事件參數
public class OilEventArgs : System.EventArgs
{
private int _oilMass = 0; //油量
public int OilMass
{
get
{
return _oilMass;
}
}
public OilEventArgs(int oilMass)
{
_oilMass = oilMass;
}
}
//汽車類,包含事件成員
//當啟動汽車時,如果油量少於某一個值,將會觸發事件
public class Car
{
private int _oilMass = 0; //油量
public event OilEventHandler OnOilWarning; //定義事件成員,事件名稱為 OnOilWarning
//給汽車加油
public void FillOil(int oilMass)
{
_oilMass = oilMass;
}
//啟動汽車
public void Startup()
{
if (_oilMass < 10)
{
OnOilWarning(this, new OilEventArgs(_oilMass));
}
}
}

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