日期:2014-05-17  浏览次数:20905 次

C#窗体关闭事件Close
  protected override void OnClosing(CancelEventArgs e)
        {
            base.OnClosing(e);
        }

  private void ETT985Form_FormClosed(object sender, FormClosedEventArgs e)
        {

            msgDispatcher.close();
            SelectTestForm.f.Show();
        } 
粗体的这个是干什么用的??关闭窗体直接调用下面这个ETT985Form_FormClosed就可以了,为什么要先调用上面的这个在来调用下面这个?有什么讲究或者一般有什么可能才会用到这么做吗?

因为要操作窗体右上角的close完全没有必要再加一个这个覆盖掉。而且我也没看出覆盖的。。。。。就是看不懂。希望用过的哪位讲解下。谢谢
对象 c#

------解决方案--------------------
重写基类的virtual函数,这里直接调用父类的方法
------解决方案--------------------
OnClosing是winform窗体关闭前的响应事件,接收到close()时触发一般用于释放资源,关闭连接,保存配置时使用,也可以用于弹出提示判断是否真的关闭。
------解决方案--------------------
引用:
引用:单指部分代码,一点意义都没有这里是没有一点意义。我只是想问一般什么时候会这么用?
因为一般关闭的时候我只需要修改当前form的Close就行了,对吧。完全没必要这么调用。为什么会这么调用。用过的人指点下谢谢。什么情况下用过。

OnClosing事件可以组织窗体的关闭,但是到了Closed事件就已经不可以阻止关闭了。这就是本质区别
------解决方案--------------------
纠正一下,其实是继承
------解决方案--------------------
Closing()是关闭时,正在关闭。
Closed()是关闭后,已经关闭!
------解决方案--------------------
引用:
引用:
引用:引用:单指部分代码,一点意义都没有这里是没有一点意义。我只是想问一般什么时候会这么用?
因为一般关闭的时候我只需要修改当前form的Close就行了,对吧。完全没必要这么调用。为什么会这么调用。用过的人指点下谢谢。什么情况下用过。
OnClosing事件可以组织窗体……


是要覆盖,msdn上不是有这句话吗
When overriding OnClosing in a derived class, be sure to call the base class's OnClosing method so that registered delegates receive the event.