C#中mdi父级的子表单

ALI*_*ANI 1 c# winforms

我使用以下代码在MDI父表单中显示子表单.如您所知,单击该按钮将显示一个新表单.继续单击按钮,屏幕将填充空白表格.为了防止这种情况发生,我移动了在按钮之外创建表单的代码.

像这样:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    Form2 f2 = new Form2();    

    private void button1_Click(object sender, EventArgs e)
    {
        f2.MdiParent = this;
        f2.Show();
    }
Run Code Online (Sandbox Code Playgroud)

但当我关闭儿童表格并想再次打开时,它不会让我.

请帮我解决这个问题.

Han*_*ant 5

您需要跟踪表单状态,以便了解需要创建新表单状态.像这样:

private Form2 f2;    

private void button1_Click(object sender, EventArgs e)
{
    if (f2 == null) {
       f2 = new Form2();
       f2.MdiParent = this;
       f2.FormClosed += delegate { f2 = null; };
       f2.Show();
    }
    else {
       f2.Activate();
    }
}
Run Code Online (Sandbox Code Playgroud)