c#中如何通过一个子窗体关闭另外一个子窗体

时间:2022-08-30 22:53:16
C#写的桌面窗口应用程序,需要通过一个子控件控制另外一个子控件的关闭,如何实现。
最好还能实现对另外一个窗体中控件属性的修改。

5 个解决方案

#1


public static void checkChildFrmExist(Form MdiForm, Form ChildForm)
        {
            foreach (Form CForm in MdiForm.MdiChildren)
            {
                CForm.Close();
            }
        }

#2


谢谢啊。这个方法挺好用的。
不过我想的是在不实用Mdi的情况下实现窗口操作和关闭。
现在我能做到的是关闭实用代码调用出来的子窗体。但是还无法实现代码控制其它窗体的关闭。比如说:我通过窗体A打开了B、C、D三个窗体。在窗体D内运行某段程序或者单击某个按钮后需要关闭窗体A或者B,但是C、D两个窗体还需要保留。这个该如何实现啊!

#3


遍历
Application.OpenForms

#4


引用 2 楼 hedgehog0014 的回复:
比如说:我通过窗体A打开了B、C、D三个窗体。在窗体D内运行某段程序或者单击某个按钮后需要关闭窗体A或者B,但是C、D两个窗体还需要保留。这个该如何实现啊!


首先C、D不能是A的子窗体。否则关闭A怎么可能CD还在。

如果它们都是某窗体的子,那么可以在D中操作时,根据this.Parent去找到它的父,然后使用父去找其他子。

#5


这几个窗体相互之间都是离散的,没有父子关系。就像我说的,通过A打开了BCD,但BCD都不是A的子窗体。也没有公共的父窗体(比如A是登陆窗体,用后就关闭)。这样该如何关闭啊。
或者是必须要有一个公共的父窗体么?只不过是隐藏的?
四楼的能不能给个示例代码?

#1


public static void checkChildFrmExist(Form MdiForm, Form ChildForm)
        {
            foreach (Form CForm in MdiForm.MdiChildren)
            {
                CForm.Close();
            }
        }

#2


谢谢啊。这个方法挺好用的。
不过我想的是在不实用Mdi的情况下实现窗口操作和关闭。
现在我能做到的是关闭实用代码调用出来的子窗体。但是还无法实现代码控制其它窗体的关闭。比如说:我通过窗体A打开了B、C、D三个窗体。在窗体D内运行某段程序或者单击某个按钮后需要关闭窗体A或者B,但是C、D两个窗体还需要保留。这个该如何实现啊!

#3


遍历
Application.OpenForms

#4


引用 2 楼 hedgehog0014 的回复:
比如说:我通过窗体A打开了B、C、D三个窗体。在窗体D内运行某段程序或者单击某个按钮后需要关闭窗体A或者B,但是C、D两个窗体还需要保留。这个该如何实现啊!


首先C、D不能是A的子窗体。否则关闭A怎么可能CD还在。

如果它们都是某窗体的子,那么可以在D中操作时,根据this.Parent去找到它的父,然后使用父去找其他子。

#5


这几个窗体相互之间都是离散的,没有父子关系。就像我说的,通过A打开了BCD,但BCD都不是A的子窗体。也没有公共的父窗体(比如A是登陆窗体,用后就关闭)。这样该如何关闭啊。
或者是必须要有一个公共的父窗体么?只不过是隐藏的?
四楼的能不能给个示例代码?