惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
D
Docker
Microsoft Security Blog
Microsoft Security Blog
Google DeepMind News
Google DeepMind News
M
MIT News - Artificial intelligence
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
Y
Y Combinator Blog
Vercel News
Vercel News
F
Fortinet All Blogs
B
Blog
Recent Announcements
Recent Announcements
A
About on SuperTechFans
GbyAI
GbyAI
T
The Blog of Author Tim Ferriss
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - Franky
MongoDB | Blog
MongoDB | Blog
Stack Overflow Blog
Stack Overflow Blog
B
Blog RSS Feed
C
Check Point Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
Visual Studio Blog
月光博客
月光博客

博客园 - 莫相会

ASP.NET数据绑定表达式语法 微软Office Live WorkSpace正式向全球用户开放 Google Talk的小徽章Chatback 使用UpdatePanel时脚本错误sys 未定义的解决办法 - 莫相会 - 博客园 用户定义函数建议 SQL SERVER临时表的使用 Active Report for .net"在VS中正常显示在IIS中无法显示"的问题之解决办法 二级联动 SQL匹配 Visual Studio 快捷键收藏 在Source Safe 采用tag 创建服务器控件 XtraGrid如何合并列或横向合并单元格? 关于WebService传输对象数组的问题 SQL Server2000中死锁经验总结 《个人信息管理器》C#源代码下载 sql server数据库定时自动备份 VSS(Visual SourceSafe)使用入门 《设计模式迷你手册》与《C#设计模式》下载
MDI程序中反射生成菜单并与权限控制的结合(利用XML将模块组件...
莫相会 · 2006-10-28 · via 博客园 - 莫相会

思路:
第一步:将程序按模块划分,提供一个接口给这些模块,模块要实现这个接口,将模块封装成组件。
第二步:将组件名、组件中的成员以及权限信息一起写入XML文件。
第三步:在主程序中读取XML文件并结合用户权限判断,再用反射生成菜单。

下面是小例子
首先定义一个接口,然后封装组件

public interface IMdiFunc
{
   
void void MdiParentToolBarOnClick(string st);
}

在将菜单信息和功能写入XML文件dymenu.xml

<?xml version="1.0" encoding="utf-8" ?> 
<ROOT>
<主菜单>主菜单1          
     
<子菜单>打开窗口1</子菜单>              
    
<菜单DLL>MyForms.dll</菜单DLL>             
     
<菜单Func>OpenForm1</菜单Func>
    
<菜单Right>A</菜单Right>             
     
<子菜单>打开窗口2</子菜单>            
     
<菜单DLL>MyForms.dll</菜单DLL>             
     
<菜单Func>OpenForm2</菜单Func>
    
<菜单Right>B</菜单Right>  
 
</主菜单>
 
<主菜单>主菜单2              
     
<子菜单>打开窗口3</子菜单>             
     
<菜单DLL>MyDlls.dll</菜单DLL>
    
<菜单Func>OpenForm3</菜单Func>
    
<菜单Right>C</菜单Right>  
</主菜单>
</ROOT>

在主窗体中考虑权限并用反射创建菜单,这里只是模拟权限控制。

主窗体