今天看WEB引用的时候翻到了C#语法那一部分,本以为自己都学过,可是在类成员这一章看到了事件代理这个名词,抱着以不知为耻的心态我迅速学习了一下。
创建事件代理,并且参数需要使用自己写的OilEventArgs
public delegate void OilEventHandler(Object sender,OilEventArgs e);
后我创建了一个事件参数
public class OilEventArgs : System.EventArgs
{
private int _oilMass;
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 FillOill(int oilMass)
{
_oilMass = oilMass;
}
//启动汽车
public void Startup()
{
if (_oilMass < 10)
{
OnOilWarning(this, new OilEventArgs(_oilMass));
}
}
}
从这个类中我看出 在Startup方法中 当汽油 _oilMass的值小于 10 的时候便会触发这个事件
然后我窗体应用程序中加入一个按钮充当启动汽车,并添加代码如下
private void button1_Click(object sender, EventArgs e)
{
Car car = new Car();
car.OnOilWarning += new OilEventHandler(OilWarning);//关联事件
car.FillOill(5);
car.Startup();
}
public void OilWarning(object sender, OilEventArgs e)
{
MessageBox.Show("检测到了汽油不足,当前油量为:"+ e.OilMass);
}
可以看到在代表加入汽油的FillOill事件参数为5
说明汽车汽油不足,在运行是后应该通过时间代理触发了OilWarning下的提示框。
有一点不懂的是为什么在Startup 中被触发的是OnOilwarning可是为什么
OilWarning(object sender, OilEventArgs e)
这个方法会被执行呢?
把书上代码看完了可是还是感觉有些不懂,谁能帮帮忙?