事件的预订和撤消2007-09-24 本站 在随后的例子中,我们声明了一个使用Button类的登录对话框类。对话框类含有两个按钮:OK和Cancel按钮。程序清单13-2:
public class LoginDialog Form{ Button OkButton; Button CancelButton; public LoginDialog(){OkButton=new Button(...);OkButton.Click+=new EventHandler(OkButtonClick);CancelButton=new Button(...);CnacelButton.Click+=new EventHandler(CancelButtonClick);}void OkButtonClick(object sender,EventArgs e){//处理OkButton.Click事件}void CancelButtonClick(object sender,EventArgs e){//处理CancelButton.Click事件}}在例子中使用了Button类的两个实例,事件的预订是通过为事件加上左操作符“+=”来实现的:OkButton.Click+=new EventHandler(OkButtonClick);这样,只要事件被触发,方法就会被调用。事件的撤消则采用左操作符“-=”:OkButton.Click-=new EventHandler(OkButtonClick);如果在类中声明了事件,我们又希望象使用域的方式那样使用事件,那么这个事件就不能是抽象的,也不能显式地包含事件访问声明。满足了这两个条件后,在任何可以使用域的场合都同样可以使用事件。注意:对事件的触发相当于调用事件所表示的原型-delegate,所以对delegate型原型的调用必须先经过检查,确保delegate不是null型的。