如何关闭当前表单Winform C#

时间:2014-01-23 14:28:26

标签: c# winforms

我有一个MDIParent,我打开了一个子窗口。如果单击按钮,我需要关闭当前父级。所以我尝试了下面的代码

private void button_log_Click(object sender, EventArgs e)
    {
        MDIParent_Main obj = new MDIParent_Main(textBox_username.Text);
            obj.Show();
            this.Close();
     }

问题是它关闭了MDIParent_Main和子窗体。 我的错误在哪里?

2 个答案:

答案 0 :(得分:3)

您遇到的问题是您的MDIParent表单是主要的申请表。当你关闭它时,应用程序正在结束并带有子窗口,请参阅this question以获取更多详细信息。

一旦被广泛接受的解决方案是隐藏父表单,直到孩子也被关闭。孩子关闭后,您可以关闭父母。

// code taken from referenced question
private void btnOpenForm_Click(object sender, EventArgs e)
{
    Form2 frm2 = new Form2();
    frm2.FormClosed += new FormClosedEventHandler(frm2_FormClosed);
    frm2.Show();
    this.Hide();
}


private void frm2_FormClosed(object sender, FormClosedEventArgs e)
{
    this.Close();
}

答案 1 :(得分:0)

你不能那样做。 你必须首先打开mdipather,而不是show()登录表单,而不是在autenticaded时关闭登录表单