2

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

喜欢 :

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

2 回答 2

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

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

于 2013-11-06T19:28:35.387 回答
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();
        }
    }

}
于 2013-11-06T19:40:29.257 回答