我是这样设计的:
首先是窗体左边是一个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;
首先是窗体左边是一个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;
public static frmInFL singleForm=null; //单例模式
public static frm getInstance()
{ if(singleForm==null || singleForm.IsDisposed)
{ singleForm=new frm(); } return singleForm; }
{
...;
}
public static bool flag=true;public static frm getInstance()
{if(flag)
{
flag=false;
return new frm();
}
else
return null;
}