关闭多个表单
Closing multiple forms
我的申请中有三份表格。
Form1、Form2 和 Form3。
Form1打开Form2,它们都打开了。还行吧。我希望这发生。
Form2 有一个打开 Form3 的按钮。同样,这是期望的行为。
Form3 有两个按钮...一个用于关闭 Form3 并返回到 Form1 和 Form2 处于打开状态。这个我可以。
问题是 Form3 上的第二个按钮...我需要那个按钮来关闭 Form3 和 Form2,这样现在只有 Form1 打开了。
关于如何在不关闭应用程序的情况下一次关闭多个表单的任何想法?
构建 Application.OpenForms 集合中 非 类型 Form1 的所有表单的列表;然后关闭它们:
private void btnCloseAllExceptForm1_Click(object sender, EventArgs e)
{
List<Form> formsToClose = new List<Form>();
foreach(Form frm in Application.OpenForms)
{
if (!(frm is Form1))
{
formsToClose.Add(frm);
}
}
foreach(Form frm in formsToClose)
{
frm.Close();
}
}
或者,您可以对打开特定 Form3
的 Form2
进行本地引用,并将其传递到 Form3 的构造函数中:
//references the Form2 that opens me (this is Form3)
private Form2 MyForm2Instance;
//you can add this in your existing Form3's constructor, or create a new one
public Form3(Form2 frm2)
{
InitializeComponent();
MyForm2Instance = frm2;
}
然后在您的 Form3 按钮中您可以拥有:
private void button1_Click(object sender, EventArgs e)
{
//this will close only the Form2 that opened this Form3
//and it will also close this Form3
MyForm2Instance.Close();
this.Close();
}
现在您只需更改打开 Form3 的方式,方法是使用 Form2 中的新构造函数:
Form3 frm3 = new Form3(this);
frm3.Show();
我的申请中有三份表格。 Form1、Form2 和 Form3。
Form1打开Form2,它们都打开了。还行吧。我希望这发生。
Form2 有一个打开 Form3 的按钮。同样,这是期望的行为。
Form3 有两个按钮...一个用于关闭 Form3 并返回到 Form1 和 Form2 处于打开状态。这个我可以。
问题是 Form3 上的第二个按钮...我需要那个按钮来关闭 Form3 和 Form2,这样现在只有 Form1 打开了。
关于如何在不关闭应用程序的情况下一次关闭多个表单的任何想法?
构建 Application.OpenForms 集合中 非 类型 Form1 的所有表单的列表;然后关闭它们:
private void btnCloseAllExceptForm1_Click(object sender, EventArgs e)
{
List<Form> formsToClose = new List<Form>();
foreach(Form frm in Application.OpenForms)
{
if (!(frm is Form1))
{
formsToClose.Add(frm);
}
}
foreach(Form frm in formsToClose)
{
frm.Close();
}
}
或者,您可以对打开特定 Form3
的 Form2
进行本地引用,并将其传递到 Form3 的构造函数中:
//references the Form2 that opens me (this is Form3)
private Form2 MyForm2Instance;
//you can add this in your existing Form3's constructor, or create a new one
public Form3(Form2 frm2)
{
InitializeComponent();
MyForm2Instance = frm2;
}
然后在您的 Form3 按钮中您可以拥有:
private void button1_Click(object sender, EventArgs e)
{
//this will close only the Form2 that opened this Form3
//and it will also close this Form3
MyForm2Instance.Close();
this.Close();
}
现在您只需更改打开 Form3 的方式,方法是使用 Form2 中的新构造函数:
Form3 frm3 = new Form3(this);
frm3.Show();