------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
事件是类在发生其关注的事情时用来提供通知的一种方式。很常见的一种是界面某个控件被点击了则触发了单击事件,然后通知程序执行某一操作。控件类不关心单击后发生什么事情,而仅仅是通知相关单位单击事件已经发生了,你们要干嘛就干嘛。然后在相关单位自己确定要如何响应这个单击事件。
事件的创建和使用
1.为事件创建一个委托类型
所有事件都是通过委托来激活的,其返回值类型一般为void。
delegate void 委托类型名([触发事件的对象名,事件参数]);
public delegate void mydelegate(string action);//声明一个事件委托类型
2.创建事件处理的方法
此方法可用放在任何地方。
//把这个方法传送给委托,用来响应事件
public static void dododo(string action)
{
Console.WriteLine("我知道你{0}我了,我就是不响,你吹我",action);
}
3.声明事件
事件是类成员,不允许在命名空间中声明,以关键字event声明。
[修饰符] event 委托类型名 事件名;
public event mydelegate xiang;//定义一个xiang(响)的事件
以下luogu类包含事件的声明和触发该事件的方式(可以用属性,方法等)
//定义一个luogu(锣鼓)触发事件类
public class luogu
{
public event mydelegate xiang;//定义一个xiang(响)的事件
private string action;
public string Action
{
get { return action; }
set
{
action = value;
xiang(action);//触发该事件
}
}
}
4.通过委托对象来调用被包含的方法(订阅事件)
事件类对象名.事件名 += new 委托类型名(事件处理方法);
lg.xiang += new mydelegate(Program.dododo);//订阅事件
完整的例子:
namespace 事件
{
public delegate void mydelegate(string action);//声明一个事件委托类型
//定义一个luogu(锣鼓)触发事件类
public class luogu
{
public event mydelegate xiang;//定义一个xiang(响)的事件
private string action;
public string Action
{
get { return action; }
set
{
action = value;
xiang(action);//如果有人敲这个锣鼓,则触发了响这个动作
}
}
}
class Program
{
//把这个方法传送给委托,用来响应事件
public static void dododo(string action)
{
Console.WriteLine("我知道你{0}我了,我就是不响,你吹我",action);
}
static void Main(string[] args)
{
luogu lg = new luogu();
lg.xiang += new mydelegate(Program.dododo);//订阅事件
Console.Write("对锣鼓做动作:");
lg.Action = Console.ReadLine();
Console.ReadKey();
}
}
}