我有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而程序仍然在后台运行
答案 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();
}
}