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

推荐订阅源

G
Google Developers Blog
F
Fortinet All Blogs
Microsoft Azure Blog
Microsoft Azure Blog
腾讯CDC
Vercel News
Vercel News
Recent Announcements
Recent Announcements
博客园 - Franky
小众软件
小众软件
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The Cloudflare Blog
宝玉的分享
宝玉的分享
I
InfoQ
博客园 - 聂微东
Jina AI
Jina AI
J
Java Code Geeks
V
V2EX
U
Unit 42
Stack Overflow Blog
Stack Overflow Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
阮一峰的网络日志
阮一峰的网络日志
L
LangChain Blog
T
The Blog of Author Tim Ferriss
量子位

博客园 - 莫相会

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>

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

主窗体