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