这个问题可能听起来很简单,但我找不到我正在寻找的答案。
我有一个Login_Form和一个Main_Form。
一旦我登录到Main_Form,我就让它可见并激活它,因为我不希望我的Login_Form关闭。
我的问题是,有没有办法从Main_Form同时关闭两个表单?
this.Close();
只会关闭当前表单。
if (access)
{
Main_Form mainForm = new Main_Form();
mainForm.Visible = true;
mainForm.Activate();
}
这是我实例化main_form的地方我如何传递对login_form的引用? 提前感谢并记住Login_Form必须保持打开状态,直到我从Main_Form关闭它!
反馈的
在查看我将使用哪些答案后,我发现了关闭所有表格的Application.Close()
方法。应该在发布之前教会这个,谢谢大家。
答案 0 :(得分:3)
如果您的主表单有对Login表单的引用,您可以在其上调用close方法。你是怎么做到的,取决于你。
例如:
public class MainForm : Form
{
Form loginform;
public MainForm(Form loginForm)
{
this.loginForm = loginForm;
}
public void CloseForms()
{
loginForm.Close();
this.Close();
}
}
在您的Active()方法中,只需传入登录表单。或者您可以使用上面的代码,只需将this
传递给构造函数而不是Active()方法。
public class MainForm : Form
{
Form loginform;
public Active(Form loginForm)
{
this.loginForm = loginForm;
}
public void CloseForms()
{
loginForm.Close();
this.Close();
}
}
//from the LOGIN form
if (access)
{
Main_Form mainForm = new Main_Form();
mainForm.Visible = true;
mainForm.Activate(this); //this is a reference to the current form. LOGIN in this case
}
答案 1 :(得分:1)
如果您有对登录表单的引用,请在该表单上调用Close
。
Login_Form.Close()
您将修改Main_Form的构造函数以接受登录表单实例作为参数
答案 2 :(得分:1)
您也可以使用AddOwnedForm方法。
从上面链接:
当表单由另一个表单拥有时,它将被关闭或隐藏 业主表格。例如,考虑一个名为Form2的表单 一个名为Form1的表单。如果Form1关闭或最小化,Form2也是 关闭或隐藏。所拥有的表格也永远不会显示在他们的背后 业主表格。您可以使用窗口的自有窗体,例如find和 替换不应显示在所有者表单后面的窗口 选择所有者表单时。
代码:
Form loginForm = new Form();
this.AddOwnedForm(loginForm);
loginForm.Show();
编辑:
Form mainForm = new Form();
mainForm.Visible = true;
mainForm.AddOwnedForm(this);
mainForm.Activate();
现在,如果关闭mainForm,它将关闭两种形式。
答案 3 :(得分:1)
您可以使用Application.Exit();
而不是Application.Close();