问题是这样的,我希望关闭父窗口时将子窗口都关掉
但是其中一个子窗口中 在FormClosing事件中我写了
this.Hide();
e.Cancel=true;
也就是只隐藏不关闭。这时候,我关闭父窗口时,它自动先关闭子窗口,遇到这两句时,就把这个事件cancel掉了,不关闭窗口。达不到希望另外,我尝试在父窗口的FormClosing事件里面写子窗口dispose,可是不行,调用的顺序是先掉子窗口的closing,时间提前被cancel掉了,请问解决方案。

解决方案 »

  1.   

    在父窗体的closing中加入
                e.Cancel = false;               //强制关闭所有窗口
      

  2.   

    主窗口关闭时遍历所有子窗口
                foreach (Form form in MdiChildren)      //不用限定号,所以所有子窗体全部关闭
                {
                    form.Close();//在这实现你的编码
                }
      

  3.   

    如果这是个button的事件,这样是OK。但是我这个是主窗口右上角的关闭事件,我试图把代码写到FormClosing里面,可是这个事件后与子窗口的Formclosing事件。谢谢你的耐心。
      

  4.   

    子窗口的FormClosing事件中如下写:
    if (e.CloseReason == CloseReason.UserClosing)
                {
                    this.Hide();
                    e.Cancel = true;
                }