日期:2014-05-20  浏览次数:20944 次

这个属性是干吗用的?
CancelEventArgs.Cancel   属性  
这个属性,MSDN上说是取消事件用的,我不明白啊,事件咋还能取消呢?取消不取消有什么用?

------解决方案--------------------
如果在事件中执行CancelEventArgs.Cancel = true则相当于按了白按,不执行任何操作,这在某些场合是很有用的。比如某文本框要求只能输入数字,那么在文本框中判断按键,如果按下的不是数字键,则将CancelEventArgs.Cancel = true,这样按别的键就不起作用了。
------解决方案--------------------
在事件发生以后通过设置CancelEventArgs这个参数的Cancel属性以决定在事件执行后要调用处理的事情.

比如在Form的Closing事件中,参数CancelEventArgs的Cancel如果为True的话,将使Form不会关闭,如果为False则Form才会正常的关闭.

------解决方案--------------------
举个很简单的例子(例子也是MSDN上的..)

// Call this method from the constructor of your form
private void OtherInitialize() {
this.Closing += new CancelEventHandler(this.Form1_Closing);
// Exchange commented line and note the difference.
this.isDataSaved = true;
//this.isDataSaved = false;
}

private void Form1_Closing(Object sender, CancelEventArgs e) {
if (!isDataSaved) {
e.Cancel = true;
MessageBox.Show( "You must save first. ");
}
else {
e.Cancel = false;
MessageBox.Show( "Goodbye. ");
}
}
如果isDataSaved为假,会执行e.Cancel=false,那么窗体会关闭..

而反之,会执行e.Cancel=true,此时窗体不会关闭..