C#一次又一次地停止呼叫MDI孩子

时间:2013-11-06 19:24:09

标签: c# .net winforms

当我点击工具条菜单时,它每次都会显示新的表单。我想停止它一次又一次地显示相同的表单。在给定的代码中,form2一次又一次地显示。我想停止它,所以它显示一次。

喜欢:

private void newToolStripMenuItem_Click(object sender, EventArgs e)      
{
  Form2 f = new Form2();
  f.MdiParent=this;
  f.Show();
}

2 个答案:

答案 0 :(得分:3)

你应该可以这样做:

private void newToolStripMenuItem_Click(object sender, EventArgs e)      
{
    var f2 = this.MdiChildren.OfType<Form2>().FirstOrDefault();
    if (f2 != null)
    {
        f2.Show();
        return;
    }

    Form2 f = new Form2();
    f.MdiParent=this;
    f.Show();
}

这将显示表单(如果已存在),否则创建并显示它。

答案 1 :(得分:2)

另一种方法是在类级别声明Form2类型的变量:

public partial class Form1 : Form
{

    public Form1()
    {
        InitializeComponent();
    }

    private Form2 f2 = null;

    private void newToolStripMenuItem_Click(object sender, EventArgs e)
    {
        if (f2 == null || f2.IsDisposed)
        {
            f2 = new Form2();
            f2.MdiParent = this;
            f2.Show();
        }
        else
        {
            if (f2.WindowState == FormWindowState.Minimized)
            {
                f2.WindowState = FormWindowState.Normal;
            }
            f2.Activate();
        }
    }

}