winfrom 如何关闭除主窗体外的所有窗体

时间:2021-07-15 04:14:49
做了个程序窗体需要做个定时关闭除主窗体外的所有窗体,例如主窗体名称叫  Form1 ,应该怎么做 。 谢谢

5 个解决方案

#1


没有人做过这方面的功能吗? winfrom 如何关闭除主窗体外的所有窗体大神们都进来吧

#2


遍历当前Application 中的所有forms,根据窗体的Name 进行关闭。

#3



            int num = Application.OpenForms.Count;
            for (int i = 0; i < num; i++)
            {
                Form f = Application.OpenForms[i];
                if (f.Name != 窗体名字)
                {
                    f.Close();
                    num = num - 1;
                    i = i - 1;
                }
            }

#4


引用 3 楼 l245382052 的回复:

            int num = Application.OpenForms.Count;
            for (int i = 0; i < num; i++)
            {
                Form f = Application.OpenForms[i];
                if (f.Name != 窗体名字)
                {
                    f.Close();
                    num = num - 1;
                    i = i - 1;
                }
            }

用foreach 来的容易些。

#5


引用 4 楼 duanzi_peng 的回复:
Quote: 引用 3 楼 l245382052 的回复:


            int num = Application.OpenForms.Count;
            for (int i = 0; i < num; i++)
            {
                Form f = Application.OpenForms[i];
                if (f.Name != 窗体名字)
                {
                    f.Close();
                    num = num - 1;
                    i = i - 1;
                }
            }

用foreach 来的容易些。


foreach 会报错,关闭一个 foreach里面就少了一个再循环就错了

#1


没有人做过这方面的功能吗? winfrom 如何关闭除主窗体外的所有窗体大神们都进来吧

#2


遍历当前Application 中的所有forms,根据窗体的Name 进行关闭。

#3



            int num = Application.OpenForms.Count;
            for (int i = 0; i < num; i++)
            {
                Form f = Application.OpenForms[i];
                if (f.Name != 窗体名字)
                {
                    f.Close();
                    num = num - 1;
                    i = i - 1;
                }
            }

#4


引用 3 楼 l245382052 的回复:

            int num = Application.OpenForms.Count;
            for (int i = 0; i < num; i++)
            {
                Form f = Application.OpenForms[i];
                if (f.Name != 窗体名字)
                {
                    f.Close();
                    num = num - 1;
                    i = i - 1;
                }
            }

用foreach 来的容易些。

#5


引用 4 楼 duanzi_peng 的回复:
Quote: 引用 3 楼 l245382052 的回复:


            int num = Application.OpenForms.Count;
            for (int i = 0; i < num; i++)
            {
                Form f = Application.OpenForms[i];
                if (f.Name != 窗体名字)
                {
                    f.Close();
                    num = num - 1;
                    i = i - 1;
                }
            }

用foreach 来的容易些。


foreach 会报错,关闭一个 foreach里面就少了一个再循环就错了