C# 关闭MDI子对象
您好,目前我正在处理一个MDI应用程序。在此应用程序中,我的主窗体是MDI父窗体。通过它,我转到MDI子窗体。现在,当子窗体中的所有功能完成时,会出现一个messagebox,单击messagebox的OK(确定),我的子窗体应该关闭,我应该转到主窗体。我的子窗体正在关闭。但现在发生的是,为了访问主窗体,我正在创建父窗体的新实例。因此有两种主要形式是开放的。 这是代码,请帮忙C# 关闭MDI子对象,c#,winforms,mdi,C#,Winforms,Mdi,您好,目前我正在处理一个MDI应用程序。在此应用程序中,我的主窗体是MDI父窗体。通过它,我转到MDI子窗体。现在,当子窗体中的所有功能完成时,会出现一个messagebox,单击messagebox的OK(确定),我的子窗体应该关闭,我应该转到主窗体。我的子窗体正在关闭。但现在发生的是,为了访问主窗体,我正在创建父窗体的新实例。因此有两种主要形式是开放的。 这是代码,请帮忙 private void btnsave_Click_1(object sender, EventArgs e) {
private void btnsave_Click_1(object sender, EventArgs e)
{
DialogResult dialogResult =
MessageBox.Show("record saved", "requisition", MessageBoxButtons.OK, MessageBoxIcon.Information);
if (dialogResult == DialogResult.OK)
{
//frmmain main = new frmmain();
//main.Show();
this.Close();
}
else
MessageBox.Show("error", "requisition", MessageBoxButtons.OK, MessageBoxIcon.Error);
conn.Close();
}
您要做的是在
main表单中
using (MdiChildForm form = new MdiChildForm())
{
form.Showdialog();
}
要在单击MessageBox
OK按钮后关闭MdiChildForm
,请在需要的某些事件处理程序中
DialogResult dlgRes = MessageBox.Show("record saved", "requisition",
MessageBoxButtons.OK, MessageBoxIcon.Information);
if (dlgRes == DialogResult.OK)
this.Close();
这将使控件返回到main窗体
。就这么简单。如果您得到两个MainForm
s,那么有些事情您没有告诉我们。如果MainForm
是隐藏的,即执行MainForm.Hide()
在某个时刻,然后在关闭MdiChild
之前,执行this.mdipart.Show()代码>
我希望这能有所帮助。只需隐藏您的MDI孩子,如果您真的不再需要它,请销毁它“这”的上下文是什么。是MdiChild吗?子窗体没有问题。close()正在关闭子窗体。我只想返回到父窗体,而不创建该窗体的新实例;main.show();这是在创建主窗体的另一个实例。我已经编写了该代码。不要这样做。易于理解的当子窗体关闭时,它将返回到父窗体。