如何在Windows窗体应用程序中关闭多个表单

3

你创建了另一个实例的第一个窗体,并隐藏了它,这样当前打开的第一个窗体将不会被隐藏。你应该隐藏打开的实例。 - Reza Aghaei
让你的表单继承自IDisposable,并将它们放置在using()语句中。 - monstertjie_za
3个回答

2
你创建了第一个窗体的另一个实例并将其隐藏,这样当前打开的第一个窗体就不会被隐藏。
你应该隐藏打开的实例。为此,可以使用 Application.OpenForms 查找它:
var first = Application.OpenForms.OfType<FirstForm>().FirstOrDefault();
if (first != null)
    first.Hide();

另外,您可以在Program类中保留对第一个表单的引用,并使用该引用来HideShow它。

请注意,Application.OpenForms会返回可见的窗体,若您隐藏了一个窗体,则该窗体将不再存在于集合中。


谢谢。这在我的实时应用程序中有效。我得到了我期望的结果。@Reza Aghaei。 - Dinesh Reddy Alla

1

很简单..当你调用form2时,你需要传递form1的引用并隐藏主窗体,在点击button1时关闭form2并打开frmshow。

当你点击BtnAnalysis时...

 private void BtnAnalysis_Click(object sender, EventArgs e)
 {
     Form2 frm2 = new Form2();
     frm2.Show(this);        // here the reference of form1 pass to the form2
 }

在您的Form2中,您需要编写以下代码...
    private Form1 frm;
    public Form2()
    {
        InitializeComponent();
    }

    public void Show(Form1 frm1)
    {
        frm = frm1;      // here assign the reference of form1 to form for hiding purpose
        this.Show();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        frmshow frmshw = new frmshow();
        frm.Hide();        // hide mainform i.e. form1
        this.Close();      // close the form2
        frmshw.Show();     // show the frmshow form
    }

这肯定有效...你必须试一试...如果你想要源代码,请通过我的电子邮件联系我。ketanvavadia@gmail.com


0

在表单 - 1 中编写以下代码

enter image description here

在表单-2中编写以下代码: {{link1:输入图像描述}}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接