打开一个表单并关闭两个表单

时间:2014-09-10 05:49:22

标签: c# winforms

我有3个表格

  1. frmDashboard
  2. frmMenu
  3. frmText
  4. 在FrmDashboard中

    frmText frmtext= new frmText();
    frmtext.Show();
    

    在FrmText中

    this.close(); // close FrmText
    
    frmMenu frmmenu = new frmMenu();
    frmmenu.show(); // to show FrmMenu
    
    frmDashboard frmD = new frmDashboard();
    frmD.Hide(); // didn't work
    frmD.dispose();// didn't work
    frmD.close();// didn't work
    

    为什么FrmDashboard没有关闭?请帮我。我是新的C#窗口开发人员。

4 个答案:

答案 0 :(得分:0)

您可以保留对FrmDashboard对象的引用,只需在需要关闭它时调用that.close。

只需将其传递给构造函数并保留它的实例即可。

答案 1 :(得分:0)

在FrmText中,您正在创建一个新的frmDashboard,但我知道您要关闭已经打开的frmDashboard实例。

向frmText添加属性:

public frmDashboard formToClose {get; set; }

创建frmText时,请设置此属性:

frmText frmtext= new frmText();
frmText.formToClose = this;
frmtext.Show();

然后,您可以在frmDashboard中关闭它:

formToClose.Close();

答案 2 :(得分:0)

您需要将对表单的引用传递给另一个表单,如

private frmDashBoard Dashboard;
public frmText(frmDashBoard dash)
{
    Dashboard = dash;
}

然后你可以去

if (Dashboard != null)
    Dashboard.Close();

答案 3 :(得分:0)

几乎没有什么可以考虑的事情:

如果frmDashboard是所有其他表单的父表单,并且您不知何故,尝试从其他子表单中关闭它,它也将关闭所有子表单。

如果您只想在打开其他表单时隐藏frmDasboard,则可以连接子表单的关闭事件,并使用它来隐藏/显示您的frmDashboard

this.Hide();
var frmMenu = new frmMenu();
frmMenu.Show();
frmMenu.Closed += (formSender, formEvents) =>
{
    this.Show();
};