在做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;
}
新聞熱點
疑難解答
圖片精選