日期:2014-05-18  浏览次数:21022 次

mdi 父子窗口通信问题
我想用delegate来控制关闭子窗口时同时关闭父窗口,在子窗口的form_closed()函数中通过delegate实例调用父窗口中的closeit()方法(该方法会关闭父窗口),但是关闭子窗口时出现stackoverflow异常,于是我在父窗口的closeit()中this.Close()之前加入MessageBox.Show("closing");发现会无限弹出信息,不知道是什么原理。。。(取消两窗口的mdi关联以后该问题消失,但是有什么其他方法解决这个问题吗?)

------解决方案--------------------
子窗口中加一个 bool 变量,初始值为 false,在 form_closed 事件方法中加入判断
if (变量为 False)
{
变量 = true;
closeit()
}
让父窗口的关闭方法只执行一次,免得无限递归