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

来源:互联网 发布:热力学软件 编辑:程序博客网 时间:2024/05/18 00:48

事件

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

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

原创粉丝点击