首 页IT知识库翔宇问吧收藏本站
当前位置:翔宇亭IT乐园IT知识库WEBASP.NET

.NET中使用类名产生单态窗体或非单态窗体

减小字体 增大字体 作者:佚名  来源:转载整理  发布时间:2012-05-17 06:03:23

在做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;
}

本人主页:http://www.xamsoft.com
论坛:http://www.xamsoft.com/bbs
email:xam_163@163.com
如转载请保留全文。
 

Tags:C# 窗体 SDI MDI

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

用户名: 查看更多评论

分 值:100分 90分 80分 70分 60分 40分 20分

内 容:

请注意用语文明且合法,不要发布带有攻击性、侮辱性的言论,谢谢合作!

验证码:

关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图 | 用户守则 | 联系我们
本站部分内容来自互联网,如有侵权,请来信告之,谢谢!
Copyright © 2007-2019 biye5u.com. All Rights Reserved.
网站备案号:黑ICP备13005378号-3