一个简单的基于XML的模块集成框架(6)

2008-02-23 05:50:49来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

if (formtag == "")
{
throw new Exception(Resources.StringNoFormFlag);
}

if(formtag.ToUpper() == "TRUE")
{
if(asmname == string.Empty)
{
throw new NullReferenceException(Resources.StringAssemblyNull);
}


//string[] a = asmname.Split(',');
object obj = null;
Type tp = Type.GetType(asmname);
if(tp != null)
{
obj = Activator.CreateInstance(tp);
}
else
{
throw new Exception("加载程序的时候出错,请检查程序(dll,exe)是否存在或者类型是否正确。");
}


//检查是否是Form类
if((obj == null) | !(obj is Form))
{
throw new Exception(Resources.StringNotForm);
}

Form frm = (obj as Form);

//检查打开的第一个窗口是否是MDIFORM
if(Application.OpenForms[0].IsMdiContainer)
{
//作为MDICHILDFORM
frm.MdiParent = Application.OpenForms[0];
}
//加载窗体
frm.Show();


}
}

/**//// <summary>
/// 菜单单击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
private void OnPluginClick(object sender, EventArgs args)
{
OfficeMenuItem item = (OfficeMenuItem)sender;
MenuClass mc = (MenuClass) item.Tag;
if ((item.Text == "退出") | (item.Text == "EXIT"))
{
OnExitClick(sender, args);
return;
}
OpenForm(mc);
}

}
这里面用到了delegate,最重要的函数是加载菜单的函数和OnPluginClick函数。

使用这个框架可以动态增加任意的层次的模块。

微软的CAB 使用Resigster site方式来增加模块,感觉不是很方便。

如果您对这个框架感兴趣可以邮件 piyanrong@gmail.com。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:读取XML为行记录

下一篇:从XML中读取数据到内存的实例