在做MDI窗体的时候,childwindow有的是单件模式的有的是不需要单件模式的
而父窗体呢可能需要通过配置文件获取的窗体的类名来统一实例化一个子窗体来显示。
下面就是我的一个实现方法,希望和大家一块探讨
定义单态子窗体
public class frmTemp : XamSoft.Shared.frmChildBase
窗体中包含如下定义
private static frmTemp _Instance;
/// <summary>
/// SDI窗体对象的获取入口
/// 如果不需要SDI窗体则不加入此方法
/// </summary>
/// <returns></returns>
public static frmTemp GetInstance()
{
if(_Instance == null)
{
_Instance = new frmTemp();
return _Instance;
}
else
{
return _Instance;
}
}
在父窗体中根据子窗体类名显示子窗体
//通过配置文件决定启动窗体
XamSoft.Shared.frmChildBase myForm = new frmChildBase();
System.Type myClassToShow = GetMyClass("XamSoft.frmTemp ");
//XamSoft子窗体类所在命名空间
foreach( System.Reflection.MethodInfo myMethod in myClassToShow.GetMethods())
{
if(myMethod.Name == "GetInstance")
{
myForm = (XamSoft.Shared.frmChildBase)myMethod.Invoke(null,null);
}
}
if(myForm == null)
{
myForm = (XamSoft.Shared.frmChildBase)myClassToShow.Assembly.CreateInstance(myClassToShow.FullName);
}
myForm.MdiParent = this;
myForm.Show();
public Type GetMyClass(string tClassName)
{
string fileName = "my.exe";
Assembly asm = Assembly.LoadFrom(fileName);
string className = tClassName;
Type thisType = asm.GetType(className);
return thisType;
}
新闻热点
疑难解答
图片精选