关于“事件”的一些回顾
2010-08-11 14:55
399 查看
有关于事件的概念呢,记得以前看过一个例子,关于猫逮老鼠的,就是说,老鼠进到一个房间里后,猫就开始逮老鼠。说老鼠不能直接告诉猫你来逮我吧,于是就通过一个监视器来通知猫,一旦猫看到老鼠就开始逮了,而这个监视器便是‘事件’。
例子:
代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace EventDemo
{
class Program
{
static void Main(string[] args)
{
Cat c = new Cat();//实例一只猫
c.Name = "大脸猫";
//将猫的捉鼠动作绑定到事件上
CatchMouse.CatchEvent += (o,e) => {
c.Catch();
};
Mouse m=new Mouse();//实例化一只老鼠
m.Name = "蓝皮鼠";
m.RunToHome();//进入室内
CatchMouse.DoCatch();//回调猫的捕捉事件
Console.ReadLine();
}
}
class Cat
{
public string Name { set; get; }
public void Catch()
{
Console.WriteLine("逮住你啦!我是"+Name);
}
}
class Mouse
{
public string Name { set; get; }
public void RunToHome()
{
Console.WriteLine("进来喽!我是"+Name);
}
}
public class CatchMouse
{
public static event EventHandler<CatchEventArgs> CatchEvent;//定义一个事件
public static void DoCatch()//提供外部访问事件方法
{
CatchEvent(null,null);
}
}
public class CatchEventArgs : EventArgs//事件参数类
{
public string Name { set; get; }
}
}
上面这个例子呢,利用到事件参数CatchEventArgs,如果我们打算向事件中传递参数,即可利用到这个参数类。
加入上面的例子,猫只能逮住5斤一下的老鼠,那么在触发事件时就需要让猫根据事件的参数来判断该不该去逮。
代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace EventDemo
{
class Program
{
static void Main(string[] args)
{
Cat c = new Cat();
c.Name = "大脸猫";
CatchMouse.CatchEvent += (o,e) => {
if(e.MouseWeight<5)
c.Catch();
};
double weight = 5;
Mouse m=new Mouse();
m.Name = "蓝皮鼠";
m.Weight = weight;
m.RunToHome();
CatchMouse.DoCatch(weight);
Console.ReadLine();
}
}
class Cat
{
public string Name { set; get; }
public void Catch()
{
Console.WriteLine("逮住你啦!我是"+Name);
}
}
class Mouse
{
public string Name { set; get; }
public double Weight { set; get; }
public void RunToHome()
{
Console.WriteLine("进来喽!我是"+Weight+"斤重的"+Name);
}
}
public class CatchMouse
{
public static event EventHandler<CatchEventArgs> CatchEvent;
public static void DoCatch(double mouseWeight)
{
CatchEvent(null, new CatchEventArgs() { MouseWeight=mouseWeight });
}
}
public class CatchEventArgs : EventArgs
{
public double MouseWeight { set; get; }
}
}
例子:
代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace EventDemo
{
class Program
{
static void Main(string[] args)
{
Cat c = new Cat();//实例一只猫
c.Name = "大脸猫";
//将猫的捉鼠动作绑定到事件上
CatchMouse.CatchEvent += (o,e) => {
c.Catch();
};
Mouse m=new Mouse();//实例化一只老鼠
m.Name = "蓝皮鼠";
m.RunToHome();//进入室内
CatchMouse.DoCatch();//回调猫的捕捉事件
Console.ReadLine();
}
}
class Cat
{
public string Name { set; get; }
public void Catch()
{
Console.WriteLine("逮住你啦!我是"+Name);
}
}
class Mouse
{
public string Name { set; get; }
public void RunToHome()
{
Console.WriteLine("进来喽!我是"+Name);
}
}
public class CatchMouse
{
public static event EventHandler<CatchEventArgs> CatchEvent;//定义一个事件
public static void DoCatch()//提供外部访问事件方法
{
CatchEvent(null,null);
}
}
public class CatchEventArgs : EventArgs//事件参数类
{
public string Name { set; get; }
}
}
上面这个例子呢,利用到事件参数CatchEventArgs,如果我们打算向事件中传递参数,即可利用到这个参数类。
加入上面的例子,猫只能逮住5斤一下的老鼠,那么在触发事件时就需要让猫根据事件的参数来判断该不该去逮。
代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace EventDemo
{
class Program
{
static void Main(string[] args)
{
Cat c = new Cat();
c.Name = "大脸猫";
CatchMouse.CatchEvent += (o,e) => {
if(e.MouseWeight<5)
c.Catch();
};
double weight = 5;
Mouse m=new Mouse();
m.Name = "蓝皮鼠";
m.Weight = weight;
m.RunToHome();
CatchMouse.DoCatch(weight);
Console.ReadLine();
}
}
class Cat
{
public string Name { set; get; }
public void Catch()
{
Console.WriteLine("逮住你啦!我是"+Name);
}
}
class Mouse
{
public string Name { set; get; }
public double Weight { set; get; }
public void RunToHome()
{
Console.WriteLine("进来喽!我是"+Weight+"斤重的"+Name);
}
}
public class CatchMouse
{
public static event EventHandler<CatchEventArgs> CatchEvent;
public static void DoCatch(double mouseWeight)
{
CatchEvent(null, new CatchEventArgs() { MouseWeight=mouseWeight });
}
}
public class CatchEventArgs : EventArgs
{
public double MouseWeight { set; get; }
}
}
相关文章推荐
- 关于“事件”的一些回顾
- 关于Android事件分发机制一些要注意的问题
- 关于Android触摸事件的一些理解
- 关于JavaScript中事件的一些重要说明
- 关于触摸事件处理的一些辅助类和回调方法(上)
- [ javascript ] 关于addEventListener绑定事件的一些细节.
- (原创)关于Spring监听事件的一些说明
- javascript事件处理--关于事件的一些基础定义
- html 元素 关于事件绑定一些结论
- 个人关于委托事件的一些浅显认识
- (每日心得)关于C#中委托与事件的一些认识(一)
- 关于css position和scroll事件的一些理解
- 关于symbian按键事件的一些总结(2)----------按键事件的处理
- 关于k12领域Lucene.net+pangu搜索引擎设计开发的一些回顾
- 关于JavaScript中事件的一些重要说明
- 关于js的addEventListener 和一些常用事件
- 关于repeater中的控件ID查找(含一些常用控件及不常用的SelectedIndexChanged事件) .
- 关于c#中委托与事件的一些理解
- iphone开发:关于触屏事件的一些操作
- 重要的经典的贴子:关于M8程序时运行中一些意外事件的处理