手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Xml编程>列表

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

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

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。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!