ct 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。
上一页 [1] [2] |