我使用以下代码在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();
    }


但是,当我关闭子窗体并想再次打开它时,它不会放开我。

请帮我解决这个问题。

最佳答案

您需要跟踪表单状态,以便知道需要创建一个新表单。像这样:

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();
    }
}

关于c# - C#中的MDI父级中的子级形式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10528547/

10-12 20:55