在我的WinForms应用中,我在某些情况下拨打Application.Exit()
。
Application.Exit()
有一个如下所示的重载:
Application.Exit(CancelEventArgs e)
文档说e
“返回应用程序中的任何表单是否取消了退出。”
但是,我不清楚如何检查e
。该方法返回void,e
未定义为out变量。我本来应该检查这个吗?
是的,我确实查看了有关Application.Exit()的其他问题,但没有一个解决这个问题。它们处理事件的处理,而不是调用方法。
答案 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
对象中设置属性无关。