当前位置: 代码迷 >> Windows Mobile >> 怎么关闭多个Form
  详细解决方案

怎么关闭多个Form

热度:84   发布时间:2016-04-25 07:49:19.0
如何关闭多个Form
所有窗口都是用
Form1 f = new Form1(); 
f.Owner = this;
f.ShowDialog();
创建

条件:
a窗口打开b窗口,b窗口打开c窗口,c窗口打开d,e,f,g窗口,d窗口打开z窗口

怎么在z,d、e、f、g任意一窗口下关闭c以及c的所有子窗口(即关闭c,d,e,f,g,z)

PS:那个z窗口,是有可能在所有的窗口内创建,然后根据条件,来判断是关闭cdefgz窗口之后先是b窗口,还是直接关闭z后先是打开z窗口的窗口

------解决方案--------------------
1.记住在WM下所有的窗口的打开顺利与关闭顺序必须相反,最后一个被打开的必须先关闭。
2.那么a->b->c的开启顺序就必须是c->b->a关闭顺序。
3.这其实就是一个堆栈的概念吗,你建立一个堆栈,[a,b,c,d,e]假如你要关闭C,那么遍历所有的元素,然后你发现d,e都在c之上,那么就先关栈顶的元素,然后把这个元素出栈,直到c为止。
------解决方案--------------------
1.记住在WM下所有的窗口的打开顺利与关闭顺序必须相反,最后一个被打开的必须先关闭。
2.那么a->b->c的开启顺序就必须是c->b->a关闭顺序。
3.这其实就是一个堆栈的概念吗,你建立一个堆栈,[a,b,c,d,e]假如你要关闭C,那么遍历所有的元素,然后你发现d,e都在c之上,那么就先关栈顶的元素,然后把这个元素出栈,直到c为止。
------解决方案--------------------
探讨
引用:
如果是用f.ShowDialog();显示窗口,是不能用这个方法的

------解决方案--------------------
模态窗口的话,父窗口必须得根据子窗口关闭后的返回值,来决定父窗口之后的动作
------解决方案--------------------
Application.exit();
------解决方案--------------------
模态窗口的话,父窗口必须得根据子窗口关闭后的返回值,来决定父窗口之后的动作

+1
------解决方案--------------------
要有联系才可以关闭的吧。要不然还不太好办
  相关解决方案