从打开其他表单的表单(C#)返回主表单并关闭其他表单?

时间:2016-06-02 02:25:43

标签: c# forms

我的问题是我有Form1,打开Form2,然后打开另一个Form,我想在最后一个Form上创建一个按钮,返回主窗体并关闭所有其他窗口。

以下是我编写Forms开头的方法:

Form2 popup= new Form2();
this.Hide();
popup.ShowDialog();
This.Show();

我对其他表格做了同样的事情,我试着这样做:

Form1 main= new Form1();
this.Close();
main.Show();

但它会打开所有其他形式。

谢谢!

3 个答案:

答案 0 :(得分:0)

试试这个

Form1 f1 = new Form1();
f1.Show();
this.Hide();

this.Hide()到您要隐藏的表单。

答案 1 :(得分:0)

您可以通过实例化的每个表单的构造函数传递MainForm的引用。

b

然后在Form2上保留MainForm的全局引用

sum(a == b) == length(a)

然后使用该引用,您可以在任何地方调用它。您也可以将其传递给您的第三种表格

Form2 popup = new Form2(this);
this.Hide();
popup.ShowDialog();

这样做的好处是,您不会丢失主表单上的任何预定义设置,因为您没有创建新实例,只是显示它

答案 2 :(得分:0)

您可以使用Application.OpenForms获取应用中所有打开表单的列表。然后你可以遍历它们并关闭所有你不想要的东西。像这样:

foreach (Form f in Application.OpenForms) {
    if (f.Name != this.Name)
        f.Close();
}
Form1 main= new Form1();
this.Close();
main.Show();

我现在无法测试代码,但您可以将当前表单与循环中的所有其他表单关闭,因此代码可以简化为:

foreach (Form f in Application.OpenForms) {
    f.Close();
}
Form1 main= new Form1();
main.Show();