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
的对象 Form1
将 Form1
的对象传递给 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();
}
}
我有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
的对象 Form1
将 Form1
的对象传递给 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();
}
}