经典的的自定义事件参数例子
来源:互联网 发布:软件使用权摊销年限 编辑:程序博客网 时间:2024/04/30 14:27
//比较经典的 .net 自带的事件参数例子,通过了四个类
火灾事件参数类(FireEventArgs),火灾事件告警类(FireAlarm)和
火灾事件处理类(FireHandlerClass),最后通过类 FireEventTest
演示了事件的处理
using System;
// FireEventArgs: a custom event inherited from EventArgs.
//
public class FireEventArgs: EventArgs
{
public FireEventArgs(string room, int ferocity) {
this.room = room;
this.ferocity = ferocity;
}
// The fire event will have two pieces of information--
// 1) Where the fire is, and 2) how "ferocious" it is.
public string room;
public int ferocity;
} //end of class FireEventArgs
// Class with a function that creates the eventargs and initiates the event
public class FireAlarm {
// Events are handled with delegates, so we must establish a FireEventHandler
// as a delegate:
public delegate void FireEventHandler(object sender, FireEventArgs fe);
// Now, create a public event "FireEvent" whose type is our FireEventHandler delegate.
public event FireEventHandler FireEvent;
// This will be the starting point of our event-- it will create FireEventArgs,
// and then raise the event, passing FireEventArgs.
public void ActivateFireAlarm(string room, int ferocity) {
FireEventArgs fireArgs = new FireEventArgs(room, ferocity);
// Now, raise the event by invoking the delegate. Pass in
// the object that initated the event (this) as well as FireEventArgs.
// The call must match the signature of FireEventHandler.
FireEvent(this, fireArgs);
}
} // end of class FireAlarm
// Class which handles the event
class FireHandlerClass {
// Create a FireAlarm to handle and raise the fire events.
public FireHandlerClass(FireAlarm fireAlarm) {
// Add a delegate containing the ExtinguishFire function to the class'
// event so that when FireAlarm is raised, it will subsequently execute
// ExtinguishFire.
fireAlarm.FireEvent += new FireAlarm.FireEventHandler(ExtinguishFire);
}
// This is the function to be executed when a fire event is raised.
void ExtinguishFire(object sender, FireEventArgs fe) {
Console.WriteLine("/nThe ExtinguishFire function was called by {0}.", sender.ToString());
// Now, act in response to the event.
if (fe.ferocity < 2)
Console.WriteLine("This fire in the {0} is no problem. I'm going to pour some water on it.", fe.room);
else if (fe.ferocity < 5)
Console.WriteLine("I'm using FireExtinguisher to put out the fire in the {0}.", fe.room);
else
Console.WriteLine("The fire in the {0} is out of control. I'm calling the fire department!", fe.room);
}
} //end of class FireHandlerClass
public class FireEventTest {
public static void Main () {
// Create an instance of the class that will be firing an event.
FireAlarm myFireAlarm = new FireAlarm();
// Create an instance of the class that will be handling the event. Note that
// it receives the class that will fire the event as a parameter.
FireHandlerClass myFireHandler = new FireHandlerClass(myFireAlarm);
//use our class to raise a few events and watch them get handled
myFireAlarm.ActivateFireAlarm("Kitchen", 3);
myFireAlarm.ActivateFireAlarm("Study", 1);
myFireAlarm.ActivateFireAlarm("Porch", 5);
return;
} //end of main
} // end of FireEventTest
- 经典的的自定义事件参数例子
- 自定义事件的例子
- Delphi 自定义事件的例子
- 一个简单的自定义事件的例子
- 自定义事件的一个例子js
- 一个很经典的事件冒泡的例子
- C# 自定义参数的 事件委托
- AS3.0的 带参数 自定义事件
- AS3.0的 带参数 自定义事件
- dojo小例子(15)给dojo on的事件处理函数传递自定义参数的两种方法
- 一个Java写的自定义的事件监听器例子
- viewstack切换视图和自定义事件的例子
- jsp的经典例子
- 死锁的经典例子
- devexpress套餐中UploadControl实现自定义参数传递的例子
- 事件委托的例子
- C#中自定义控件中带参数事件的实现
- flex有参数的自定义事件,数据验证测试
- XMLHTTP抓取远程数据的后期处理
- (转贴)Java的数据库应用
- 将GBK的简体转换到GBK繁体(转)
- 菜单联动(转)
- 利用userData实现客户端保存表单数据
- 经典的的自定义事件参数例子
- 最佳SQL 基础
- using namespace std;有什么用[转]
- 外行如何领导内行?
- Oracle面试问题-技术篇
- 智能客户端相关资料
- 关于网络编程(服务端)的一些笔记
- 如果她的确睡自己床上
- 引用一个能发email的JavaMail的例子