我有一个mdi子窗口,会被菜单事件多次调用,我想知道在c#的项目中,应该在每次需要的时候重新构造(new)一个mdi子窗口还是应该只保持一个实例?
如果只保持一个实例的话,需要在窗口的关闭事件中如何处理才能确保该子窗口仅被隐藏?

解决方案 »

  1.   

    不是这样说地。
    保持一个实例意思是多次点菜单时打开同一个实例窗体,而不要去new一个,但又不是当用户点关闭按钮时你还不把窗体关掉,这会浪费内存。
    给你一段示例代码,当多次点菜单时会打开同一个Form2的实例,但当用户关闭时才会去重新new一个
    for(int i =0;i<this.MdiChildren.Length;i++)
    {
    if(this.MdiChildren[i].Name == "Form2")
    {

    this.MdiChildren[i].Show();
                       this.MdiChildren[i].Activate();
    return;
    }
             Form2 frm = new Form2();
            frm.MdiParent = this;
            frm.Show();
    }
      

  2.   

    喔...不好意思.贴代码的时候贴错了
    for(int i =0;i<this.MdiChildren.Length;i++)
    {
    if(this.MdiChildren[i].Name == "Form2")
    {

    this.MdiChildren[i].Show();
                       this.MdiChildren[i].Activate();
    return;
    }
     }
     Form2 frm = new Form2();
     frm.Name = "Form2";
     frm.MdiParent = this;
     frm.Show();