C# 当其中一个窗体关闭时,如何关闭内存中加载的两个窗体?
当我运行我的应用程序时,两个不同的表单同时被加载,但其中一个被显示。现在我想如果这些表单中的一个被关闭,其他隐藏的表单也应该被关闭。有什么建议吗。C# 当其中一个窗体关闭时,如何关闭内存中加载的两个窗体?,c#,C#,当我运行我的应用程序时,两个不同的表单同时被加载,但其中一个被显示。现在我想如果这些表单中的一个被关闭,其他隐藏的表单也应该被关闭。有什么建议吗。 这些表单之间没有父子关系。我将假设这是一个引用两个表单的应用程序。如果不是这样,请告诉我 基于此假设,伪代码中显示了以下内容: MyApplication { Form form1; Form form2; } 如果尚未关闭另一个窗体,则该窗体的每个关闭事件都可以关闭该窗体: Form1_Close() { if(form2
这些表单之间没有父子关系。我将假设这是一个引用两个表单的应用程序。如果不是这样,请告诉我 基于此假设,伪代码中显示了以下内容:
MyApplication
{
Form form1;
Form form2;
}
如果尚未关闭另一个窗体,则该窗体的每个关闭事件都可以关闭该窗体:
Form1_Close()
{
if(form2 != null)
{
form2.Close();
form2 = null;
}
}
然后:
Form2_Close()
{
if(form1 != null)
{
form1.Close();
form1 = null;
}
}
这是否满足您的要求?假设这两个表单都在同一个过程中,您可以让第二个隐藏表单处理可见表单的FormClosed事件,并在激活可见表单的FormClosed事件时自行关闭它
public partial class Form1 : Form
{
private void Form1_Load(object sender, EventArgs e)
{
// The following does not need to happen in the Load of this form
// Create hidden Form
Form2 frm = new Form2();
// Attach hidden form to this form
frm.AttachTo(this);
}
}
public class Form2 : Form
{
public void AttachTo(Form frmMain)
{
frmMain.FormClosed += new FormClosedEventHandler(frmMain_FormClosed);
}
void frmMain_FormClosed(object sender, FormClosedEventArgs e)
{
this.Close();
}
}
它们都是从同一进程启动的,还是从两个不同的程序启动的?@keyboardP,来自同一应用程序的两个不同表单被加载并可互换使用。