如何从Application.Exit()中检查CancelEventArgs?

时间:2014-08-19 23:07:55

标签: c# winforms

在我的WinForms应用中,我在某些情况下拨打Application.Exit()

Application.Exit()有一个如下所示的重载:

Application.Exit(CancelEventArgs e)

文档说e“返回应用程序中的任何表单是否取消了退出。”

但是,我不清楚如何检查e。该方法返回void,e未定义为out变量。我本来应该检查这个吗?

是的,我确实查看了有关Application.Exit()的其他问题,但没有一个解决这个问题。它们处理事件的处理,而不是调用方法。

2 个答案:

答案 0 :(得分:1)

在调用CancelEventArgs之后实例化Cancel变量并测试其Application.Exit属性:

CancelEventArgs e = new CancelEventArgs();
Application.Exit(e);
if (e.Cancel)
{
    // Cancelled
}

答案 1 :(得分:0)

您可以检查e的原因是e是对您在方法调用中传递的CancelEventArgs对象的引用。引用类型的变量不直接包含其数据;它包含对其数据的引用。当您pass a reference-type parameter,在这种情况下是对CancelEventArgs对象的引用时,被调用的方法能够使用该引用来访问CancelEventArgs对象的属性,并且它可以例如设置{ {1}}至e.Cancel

方法调用完成后,故事是相同的:true仍然是对您传递的e对象的引用,现在您可以检查其属性以确定是否有任何更改被叫方法。

编辑我从您的评论中看到它还不清楚,所以请考虑一下:将CancelEventArgs作为e传递将意味着被调用的方法可能会发生变化{{ 1}}引用不同的ref对象。它与是否可以在现有e对象中设置属性无关。