为什么OnClosing已经过时,我应该迁移到OnFormClosing

And*_*rns 6 .net c# winforms

我正在阅读System.Windows.Forms.Form.OnClosing()方法的MSDN文档,并注意到:

注意:OnClosing方法在.NET Framework 2.0版中已过时; 请改用OnFormClosing方法.

我找不到它为什么被标记为过时的参考.
我想我会在这里问:

  1. 在我浪费几个小时穿过反射器之前
  2. 将其他人作为参考是有用的

我看到的唯一区别是你可以访问FormClosingEventArgs,所以如果你不需要那些(你明显没有使用OnClosing)那么转换到OnFormClosing有什么好处?

我知道过时意味着它可以消失,所以你应该尽快更新,但你和我都知道在MS土地上淘汰意味着很少.我想知道有关原因的可靠技术细节.

Ree*_*sey 8

我认为主要原因是解决OnClosing的一些不一致问题,特别是如果表单由于Application.Exit而关闭则不会调用它.

文档:

调用Application .. ::.Exit方法退出应用程序时,不会调用OnClosed和OnClosing方法.如果在这些方法中都有必须执行的验证代码,则应在调用Exit方法之前单独调用每个打开表单的Form .. ::.Close方法.

OnFormClosing提供对CloseReason成员的访问,这使得处理更加容易,以一种干净,一致的方式正确处理.

  • 那,您可以在不关闭应用程序的情况下关闭表单,因此能够区分两者很重要。 (2认同)