C# 为什么取消不取消和返回不返回,除非他们合作?
使用此代码:C# 为什么取消不取消和返回不返回,除非他们合作?,c#,winforms,formclosing,C#,Winforms,Formclosing,使用此代码: private void PlatypusMainForm_FormClosing(object sender, FormClosingEventArgs e) { if ((UnsavedChanges()) && (!(UserWantsToMoveOnWithoutSaving(CONFIRM_CLOSE_UNSAVED_CHANGES_LOST, "Close Without Saving?")))) { e.Cancel = tru
private void PlatypusMainForm_FormClosing(object sender, FormClosingEventArgs e) {
if ((UnsavedChanges()) && (!(UserWantsToMoveOnWithoutSaving(CONFIRM_CLOSE_UNSAVED_CHANGES_LOST, "Close Without Saving?")))) {
e.Cancel = true;
return;
}
if (oracleConnectionMainForm.State == ConnectionState.Open) {
oracleConnectionMainForm.Close();
oracleConnectionMainForm.Dispose();
}
}
…如果注释掉e.Cancel=true,则表单仍将关闭
…如果return被注释掉,其余的代码(Close和Dispose)将运行(因此,如果我随后尝试保存更改,则会收到连接未打开的错误消息)
因此,我必须同时执行两项操作(取消和返回),以使代码正常工作,因为我认为这两项操作中的任何一项都应该如此
这正常吗/如预期的那样?是的,如预期的那样。
e.Cancel
告诉框架您已经处理了事件,并且您不想要自动行为。如果没有它,在方法返回后,框架将继续处理事件,并关闭窗口
返回
中止当前方法的执行,因此结尾的内容不会执行。取消默认为false,因此如果您注释掉它,它永远不会设置为true。
如果将return取出,它将在其余代码执行后才返回,或者在您的情况下,返回错误
if (SomeCondition)
{
e.Cancel = true;
}
else
{
// Do Something
}
会更清晰,也不会那么复杂。x=y做什么?返回怎么办?他们如何互动?