Form1隐藏而不是关闭

时间:2017-09-11 09:02:25

标签: c#

我正在尝试创建一个简单的登录页面,如果我点击登录按钮form1应该隐藏,form2应该弹出,当我点击退出时它会在form2上将它带回到form1,问题是当我点击登出按钮时form2它让我回到了form1,但是当我点击form1上的“X”(关闭)它隐藏(我可以看到应用程序在任务管理器中运行)而不是关闭。

form1登录按钮代码:

private void button1_Click(object sender, EventArgs e)
    {
        Form2 mainUI = new Form2();
        mainUI.Show();
        this.Hide();
    }

form2注销按钮代码:

private void button1_Click(object sender, EventArgs e)
    {
        Form1 loginPage = new Form1();
        loginPage.Show();
        this.Close();
    }

2 个答案:

答案 0 :(得分:3)

问题在于,您正在创建Form1的新实例,而不是再次打开它:

Form1 loginPage = new Form1();

在这里试试这个:

private void button1_Click(object sender, EventArgs e)
{
    var formToBeOpen = Application.OpenForms.OfType<Form1>().SingleOrDefault();
    formToBeOpen.Show();
    this.Close();
}

现在关于你的帖子,如果你关闭你的Form2,你的Form1仍然在后台运行,因为这段代码:

this.Hide();

你只是隐藏它,然后打开你的Form2,然后你单击Form2上的 X 按钮关闭你的Form2但不一定意味着也将关闭你的Form1,因为它是仍然在后台运行。如果要关闭Form1,请在Form2代码中添加:

private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
    var formToBeOpen = Application.OpenForms.OfType<Form1>().SingleOrDefault();
    formToBeOpen.Close();
}

答案 1 :(得分:0)

我会尽力回答。因为您在按钮注销中声明了一个新实例。在form1按钮中输入此代码

private void button1_Click(object sender, EventArgs e)
{
    Form2 x = new Form2(this);            
    x.Show();
    this.Hide();
}

as form2,因为我传递了form1,所以把这个代码放在

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

    private void button1_Click(object sender, EventArgs e)
    {
        this.Hide();
        form1.Show();
    }
}