我有3个表格
在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#窗口开发人员。
答案 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();
};