C# 使用反射动态加载子窗体
2014-04-15 18:41
281 查看
所有的模块、菜单的类名窗体都是从数据库提取路径字符串, //点击导航栏项时触发 //所有的导航栏项的点击事件都在此函数中处理 private void navBarItem_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e) { EntityMode entityMode = e.Link.Group.Tag as EntityMode; //模块实体 EntityMenu entityMenu = e.Link.Item.Tag as EntityMenu;//菜单实体 string dllPath = entityMode.Path; //模块路径 string formName = entityMenu.ClassName; //菜单类名 string fullFormName = dllPath + "." + formName + "," + dllPath; //完整的反射路径 Type formType = Type.GetType(fullFormName); //该路径的反射 if (formType != null)//查看反射是否成功 { if (typeof(Form).IsAssignableFrom(formType)) //反射结果是否为窗体Form { CloseOtherAllFrom(); //关闭父窗体中的所有子窗体 Form frm = (Form)Activator.CreateInstance(formType); //创建反射窗体实例 frm.Text = entityMenu.MenuName; //窗体名 frm.MdiParent = this; //设置为子窗体与父窗体关系 frm.Show(); } else { MessageBox.Show("指定的类型不能是从Form类型继承", "温馨提示");} } else { MessageBox.Show("指定的类型不存在", "温馨提示"); } } //加载新的子窗体时,关闭其它子窗体 private void CloseOtherAllFrom() { foreach (Form frm in this.MdiChildren) { frm.Close(); } } 模块管理如下: 菜单管理如下: 项目结构如下:
相关文章推荐
- asp.net(c#)中使用反射动态加载dll简单示例
- C# 使用反射实现根据名称动态创建窗体的几种方法
- C#,动态加载DLL,通过反射,调用参数,方法,窗体
- C#中使用反射来动态加载和卸载DLL
- C#中使用反射动态加载和卸载DLL
- C# 使用反射动态加载子窗体
- C#中使用反射来动态加载和卸载DLL
- C#中使用反射动态加载和卸载DLL
- 【点滴积累】在C#中使用反射动态调用类型成员
- [c#美味] 使用反射动态创建实例并调用方法
- 【点滴积累】在C#中使用反射动态调用类型成员
- 利用反射实现窗体动态加载
- C#使用反射加载多个程序集的实现方法
- 反射-动态加载和使用类型
- C#窗体操作数据库时使用按钮动态衔接上下一条的数据
- 使用反射和codeDom实现C#插件开发(3)主程序开发之动态类
- 使用反射实现根据名称动态创建窗体的几种方法
- C++中使用反射动态加载和卸载DLL
- C# 反射动态加载窗口
- (C#)利用反射动态调用类成员、动态加载控件以及插件编程思想