我是这样设计的:
首先是窗体左边是一个treeview,右边根据左边不同的选项显示相应的窗口。我把右边的窗口做成了dll文件,通过动态来加载。我现在想问一下我该如何使右边的窗口只打开一次。下面是显示及加载窗口的代码:Assembly asm = Assembly.LoadFile(filePath);
Type childFormType = asm.GetType(typeName);
//object []args={this};
Form childForm = childFormType.InvokeMember(null, 
BindingFlags.DeclaredOnly 
| BindingFlags.Public 
| BindingFlags.NonPublic
| BindingFlags.Instance 
| BindingFlags.CreateInstance,
null, null,null) as Form;
childForm.Dock=DockStyle.Fill ;
childForm.FormBorderStyle =FormBorderStyle.None ;
childForm.TopLevel=false;
childForm.WindowState=FormWindowState.Maximized ;
panelRight.Controls.Clear ();
panelRight.Controls.Add (childForm);
childForm.Show();
return true;

解决方案 »

  1.   

    private frm();
    public static frmInFL singleForm=null;     //单例模式
    public static frm getInstance()
    { if(singleForm==null || singleForm.IsDisposed)
    { singleForm=new frm(); } return singleForm; }
      

  2.   

    这段代码如何用呢,结合我上面的代码,我是通过dll来调用的。
      

  3.   

    private frm()
    {
      ...;
    }
    public static bool flag=true;public static frm getInstance()
    {if(flag)
    {
      flag=false;
      return new frm();
    }
    else
      return null;
    }