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

时间:2009-07-29 16:54:49

标签: c# .net winforms

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

  

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

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

  1. 在我浪费时间穿过反射器之前
  2. 将其他人作为参考
  3. 会很有用

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

    我知道过时意味着它可以消失,所以你应该尽快更新,但你和我都知道在MS土地上过时的意义不大。我想知道关于为什么的可靠技术细节。

1 个答案:

答案 0 :(得分:8)

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

来自documentation

  

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

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