winform窗口怎么样让运行的时候只保持当前操作的窗口,其他的都关闭

时间:2022-12-02 19:15:17
winform窗口怎么样让运行的时候只保持当前操作的窗口,其他的都关闭。不然的话一直来回点会出现很多窗口,太占资源了。有什么办法可以解决窗口都保持当前操作的窗口呢,其他的都是关闭的

8 个解决方案

#1


没明白什么是“太占资源”,是不是每个窗体都处理大量数据?
如果是凌乱了,可以使用this.Hide()和this.Show()
达到隐藏和显示的问题,如果希望确实的关闭窗体,可以委托主线程创建新窗体后自行关闭

#2


引用 1 楼 icdbow 的回复:
没明白什么是“太占资源”,是不是每个窗体都处理大量数据?
如果是凌乱了,可以使用this.Hide()和this.Show()
达到隐藏和显示的问题,如果希望确实的关闭窗体,可以委托主线程创建新窗体后自行关闭
我的就是需要每次窗口只运行一个,只运行当前的窗口,其他的关闭。不然的话,一直开着一下子就有了几十个窗口

#3


你说明一下窗体的关系,所有窗体都是同级的么?入口的主窗体是不能关的,关闭程序会结束。
你说的不是同一程序同一时间不能多次运行吧?

#4


所谓的层次是否存在A创建B,B创建C这类。

#5


引用 4 楼 icdbow 的回复:
所谓的层次是否存在A创建B,B创建C这类。
是的。除了主程序不能关闭,其他的A创建B B创建C的都是要关闭,当我打开了D前面的A,B,C窗口都要关闭的

#6


一预计该醒梦中人

#7


新建一个窗体后并显示后,把当前窗体给隐藏了。
new Form() show();
this.hide();

#8


                for (int i = Application.OpenForms.Count - 1; i >= 0 && i < Application.OpenForms.Count; --i)
                {
                    Form frm = Application.OpenForms[i];
                        if (frm.GetType() != typeof(你想激活的窗体类) &&
                            frm != caller
                            )
                        {
                            frm.Close();
                        }
}

#1


没明白什么是“太占资源”,是不是每个窗体都处理大量数据?
如果是凌乱了,可以使用this.Hide()和this.Show()
达到隐藏和显示的问题,如果希望确实的关闭窗体,可以委托主线程创建新窗体后自行关闭

#2


引用 1 楼 icdbow 的回复:
没明白什么是“太占资源”,是不是每个窗体都处理大量数据?
如果是凌乱了,可以使用this.Hide()和this.Show()
达到隐藏和显示的问题,如果希望确实的关闭窗体,可以委托主线程创建新窗体后自行关闭
我的就是需要每次窗口只运行一个,只运行当前的窗口,其他的关闭。不然的话,一直开着一下子就有了几十个窗口

#3


你说明一下窗体的关系,所有窗体都是同级的么?入口的主窗体是不能关的,关闭程序会结束。
你说的不是同一程序同一时间不能多次运行吧?

#4


所谓的层次是否存在A创建B,B创建C这类。

#5


引用 4 楼 icdbow 的回复:
所谓的层次是否存在A创建B,B创建C这类。
是的。除了主程序不能关闭,其他的A创建B B创建C的都是要关闭,当我打开了D前面的A,B,C窗口都要关闭的

#6


一预计该醒梦中人

#7


新建一个窗体后并显示后,把当前窗体给隐藏了。
new Form() show();
this.hide();

#8


                for (int i = Application.OpenForms.Count - 1; i >= 0 && i < Application.OpenForms.Count; --i)
                {
                    Form frm = Application.OpenForms[i];
                        if (frm.GetType() != typeof(你想激活的窗体类) &&
                            frm != caller
                            )
                        {
                            frm.Close();
                        }
}