现在的位置: 首页 > 综合 > 正文

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

2012年11月04日 ⁄ 综合 ⁄ 共 1062字 ⁄ 字号 评论关闭

事件

  在发生其他类或对象关注的事情时,类或对象可通过事件通知它们。发送(或引发)事件的类称为“发行者”,接收(或处理)事件的类称为“订户”。

    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));
}
}
}

[Reprinted From http://tech.ddvip.com/2009-04/1240034523115739.html]

抱歉!评论已关闭.