用[X]按钮打开/显示其他表单单击C#

时间:2018-06-06 10:50:10

标签: c# formclosing

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

登录成功后,form2显示。

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

这很有效。

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

我在Form2中试过这个:

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

但这只是关闭Form2而不是打开From1而程序仍然在后台运行

1 个答案:

答案 0 :(得分:1)

在我的示例Form1中,LoginForm 的作用

问题是您正在杀死实际创建了Form2实例的Form1(此处是您的登录表单)。因此,当Form2的实例将随之消失时,其所有本地实例也将消失。

您可以做一件事,同时从Form2创建一个Form1对象,将Form1的对象传递给Form2

所以你不需要在Form1中创建Form2的实例,在关闭它时你可以简单地调用Form1的show方法。

如下所示。

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();
    }
}