我正在尝试创建一个简单的登录页面,如果我点击登录按钮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();
}
答案 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();
}
}