Visual C#代码加载Form1的方法

3
在我的Visual C#程序中,我有两个窗体,分别叫做Form1Form2Form1有一个名为btnfrm1的按钮,而Form2有一个名为btnfrm2的按钮。
我需要我的程序做到以下几点:
当我按下btnfrm1时,它需要打开Form2并隐藏Form1;当我按下btnfrm2时,它需要再次显示Form1并关闭Form2
对于btnfrm1的单击事件,我的编码如下:
Form2 frm2= new Form2();
frm2.Show();
this.Hide();

但我不知道在 Form2 的 btnfrm2 点击事件中写什么,才能让 Form2 消失并让 Form1 重新出现。

有人能帮我吗?任何帮助我都感激不尽。

3个回答

2

尝试下面的代码

Form1 frm1 = (Form1)Application.OpenForms["Form1"];
frm1.Show();
this.Close();

非常感谢@Masoud,您的代码对我很有用。 代码真的很简单。 再次感谢您帮助我,我非常感激您的帮助。 - Hasith Sithila

1

你需要了解 MdiParent,它将创建一个父应用程序。所有子窗体将出现在父窗体中。所以在你的初始 form 中,你需要执行以下操作:

  • MdiContainer 应该设置为 true

它将与 MenuStrip 结合使用,像传统应用程序一样工作:

Child form = new Child();
form.Parent = this;
form.ShowDialog();

那么你可以这样做。如果你采用你的方法,应该使用 Close 而不是 Hide,这样它会自动关闭并允许你重新打开。你可以查看这个答案,我在detail中详细说明了,只需忽略关于Tree View的第二部分。

谢谢Greg,你的代码确实起作用了,但它与我预期的有些不同。但还是感谢你的帮助,我也很欣赏你的帮助。 - Hasith Sithila

1
您的次要表单需要了解您的主要表单。
public class Form1
{
    private Form2 _form2;

    public void ShowForm2()
    {
        if(_form2 == null)
        {
            _form2 = new Form2();
            _form2.Bind(this);
        }
        this.Hide();
        _form2.Show();
    }
}

public class Form2
{
    private Form1 _form1;

    public void Bind(Form1 form1)
    {
        _form1 = form1;
    }

    public void ShowForm1()
    {
        this.Hide();
        _form1.Show();
    }
}

亲爱的Silas Reinagel,我尝试了你的代码,但在Form2.cs中它会下划线"Bind"这个词,并显示一个"方法必须有返回类型"的错误。我不知道该返回什么。但我想你可能有一些想法。 - Hasith Sithila
谢谢Silas Reinagel,现在你的代码甚至可以工作了。感谢你的帮助,我很感激你的帮助。 - Hasith Sithila

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