日期:2014-05-19  浏览次数:21017 次

将窗口关闭设为隐藏,然后又要在窗口关闭以前执行某个操作
我有两个窗口,MainForm和Form2,在MainForm中点击按钮弹出Form2

本人通过以下代码将Form2关闭改为隐藏,
              private   void   Form2_FormClosing(object   sender,   FormClosingEventArgs   e)
                {
                        e.Cancel   =   true;
                        this.Hide();

                }
现在遇到的问题是,
我想在From2关闭的时候保存文件或者其他操作,
但程序永远不会执行CLosed()里的代码,
而Closing()里面也不能再执行保存代码,因为里面已经又了隐藏窗口的代码.

大家有没有好办法?!



------解决方案--------------------
嗯。如果你是通过关闭主窗体来实现的话,直接在主窗体的Closing里面调用Form2的方法就可以。
------解决方案--------------------
在form2中添加一全局变量,
public bool isHide = true;

frm是form2对象

MainForm代码:
//想隐藏form2时
frm.isHide = true;
frm.FormClosing();

//想关闭form2时
frm.isHide = false;
frm.FormClosing();

form2代码:
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
if(isHide)
{
e.Cancel = true;
this.Hide();
}
else
{
//执行保存操作
e.Cancel = false;
}

}