事件(event)
事件类似于异常,因为它们都是由对象引发(抛出),我们可以提供代码来处理事件。但它们也有区别,最重要的区别是并没有与try...catch 类似的结构来处理事件,而必须订阅(subscribe)它们。订阅一个事件的含义是:提供代码,并在事件发生时执行这些代码,它们称之为事件处理程序。在实际编程中,就会有三个对象参与整个活动:(1)事件发生者(2)事件处理者(3)除此之外还有它们的活动平台。事件发生者触发了一个事件,但它并不知道哪个对象或方法将会接受到并处理它触发的事件,它对事件处理的唯一要求就是:通过委托指明处理事件的方法必须有的返回类型和参数。委托是双方的一个桥梁,即.NET Framework中就是委托(delegate)。
我们可以用一个恐怖分子(肇事者)和安全部门的比喻,来说明事件和委托的大概意思,如果不当,请各位拍砖。
1、首先创建一个自己的EventArgs类。
引自MSDN:
EventArgs是包含事件数据的类的基类,此类不包含事件数据,当事件引发不需要向事件处理程序传递状态信息时会使用此类;如果事件处理程序需要状态信息,则应用程序必须从此类派生一个类来保存数据。
作案信息使用按键来模拟:派生一个CrimeEventArgs类
// -------------------作案信息
internal
class
CrimeEventArgs: EventArgs
{
private char keyChar;
public CrimeEventArgs( char keyChar ) : base()
{
this.keyChar = keyChar;
}
public char KeyChar
{
get
{
return keyChar;
}
}
}
{
private char keyChar;
public CrimeEventArgs( char keyChar ) : base()
{
this.keyChar = keyChar;
}
public char KeyChar
{
get
{
return keyChar;
}
}
}
2、再创建一个事件发生者,即肇事者的类Culprit:
// -------------------Culprit是肇事者