dotNet中使用类名产生单态或非单态的窗体

王朝c#·作者佚名  2006-12-17
宽屏版  字体: |||超大  

dotNet中使用类名产生单态或非单态的窗体

dotNet中使用类名产生单态或非单态的窗体 在做mdi窗体的时候,childwindow有的是单件模式的有的是不需要单件模式的

而父窗体呢可能需要通过配置文件获取的窗体的类名来统一实例化一个子窗体来显示。

下面就是我的一个实现方法,希望和大家一块探讨

一 、定义单态子窗体

public class frmTemp : XamSoft.Shared.frmChildBase

窗体中包含如下定义

private static frmTemp _Instance;

/// <summary>

/// 单件模式的对象的获取入口

/// 如果不需要单件模式则不加入此方法

/// </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;

}

本人主页:http://www.xamsoft.com

论坛:http://www.xamsoft.com/bbs

email:xam_163@163.com

如转载请保留全文。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有