我有2个窗口表单,1个登录表单和1个主表单。我想一起关闭主表单和登录表单。我该怎么办?
我尝试了这个命令;
Form2 ac = new Form2();
ac.Show();
this.Close();
但这结束了所有形式。我只想关闭Form1
。
答案 0 :(得分:1)
如果您关闭主窗体当然所有窗口都将关闭,主窗体包含所有其他窗口 表格,你的Q不清楚,你能给我们一个清晰的片段,展示你想做什么吗?
答案 1 :(得分:1)
如果您的Main方法包含:
Application.Run(form1);
您正在关闭form1
,您的申请将关闭。
你可以“临时”隐藏form1,同时显示ac。使用ShowDialog来阻止代码,直到交流表单关闭为止:
using (Form2 ac = new Form2()) {
this.Hide();
if (ac.ShowDialog() == DialogResult.OK) {
this.Show();
} else {
// Exit app
this.Close();
}
}
答案 2 :(得分:0)
根据哪种表单调用哪种形式(以及如何),您必须以某种方式“冒泡”请求从登录表单中关闭到主表单。
假设表单1以模态方式调用表单2:
public partial class Form1 : Form
{
// ...
private void callForm2()
{
var form2 = new Form2();
if ( form2.ShowDialog( this )== DialogResult.Abort )
{
// Close myself if called form instructs me to close.
Close();
}
}
}
如您所见,我使用DialogResult.Abort
作为“通信信号”来关闭。这可以在Form2
中完成,如下所示:
public partial class Form2 : Form
{
// ...
private void buttonCloseAll_Click( object sender, EventArgs args )
{
// Close myself _and_ return the abort result to the caller.
DialogResult = DialogResult.Abort;
}
}
请注意,这只是一个(不完整的例子)。我相信您的需求可以有其他解决方案。
答案 3 :(得分:0)
您打开的1.表单是应用程序的主要表单。这与您如何命名表单或此表单上的内容无关。如果您关闭主表单,您的应用程序将终止。
你可以在你的情况下做两件事: