Open/show 其他带有 [X] 按钮的表单单击 C#

Open/show other Form with [X] Button Click C#

我有2个表单,Startform是一个登录表单(Form1)和一个登录后打开的表单,Form2。

登录成功后显示form2。

f2.Show(); //form2 show
this.Hide(); //login(f1) hide

这有效。

现在我希望,如果我按下红色 X 按钮(右上角),Form2 将关闭并再次显示登录页面。

我在 Form2 中试过这个:

Form1 f1 = new Form1();
....
...
private void Main_FormClosing(object sender, FormClosingEventArgs e)
    {
      f1.show();
    }

但是这只是关闭了 Form2 而没有打开 From1 并且程序仍然 运行 在后台

在我的示例中 Form1 扮演您的 LoginForm

的角色

问题是你正在杀死一个 Form2,它实际上已经创建了 Form1 的实例(这里是你的登录表单)。因此,当 Form2 的实例将随之消失时,其所有本地实例也将消失。

你可以做一件事,同时创建一个 Form2 的对象 Form1Form1 的对象传递给 Form2

因此您不需要在 Form2 中创建 Form1 的实例,并且在关闭它时您可以简单地调用 Form1 的显示方法。

如下所示。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
        //passing current class' object
        Form2 form2 = new Form2(this);

        form2.Show();
        this.Hide();
    }
}

和表格 2:

public partial class Form2 : Form
{
    Form1 m_form1;
    public Form2(Form1 form1)
    {
        InitializeComponent();
        m_form1 = form1;
    }

    private void Form2_FormClosing(object sender, FormClosingEventArgs e)
    {
        m_form1.Show();
    }
}