c# winform读取xml文件创建菜单的代码
动态创建菜单使得程序灵活性大大增加,本文根据读取xml文件中的配置菜单项来动态创建菜单,代码如下
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using WinformMenu.Helper;
using System.Xml;
namespace WinformMenu
{
public partial class FrmAddMenu : Form
{
public FrmAddMenu()
{
InitializeComponent();
}
private void FrmAddMenu_Load(object sender, EventArgs e)
{
MenuStrip menuS = new MenuStrip();
menuS.Parent = this;
string xmlFileName = @"F:\c#工程\WinformMenu\WinformMenu\XML\菜单.xml";
createMenu(xmlFileName, menuS);
}
public void createMenu(string xmlFileName, MenuStrip menuS)
{
//1:根据XmlElement创建菜单
//XmlNode node = xmlHelper.GetXmlNode(xmlFileName, "//MangeTvMenu");
//foreach (XmlNode xml in node.ChildNodes)
//{
// ToolStripMenuItem mainMenu=new ToolStripMenuItem();
// mainMenu.Text = xml.Attributes["descript"].Value;
// menuS.Items.Add(mainMenu);
// if (xml.HasChildNodes)
// {
// CreateSubMenuByNode(xml, mainMenu);
// }
//}
//2:根据XmlNode创建菜单
XmlElement xml = xmlHelper.GetXmlElement(xmlFileName);
foreach (XmlElement xel in xml.ChildNodes)
{
ToolStripMenuItem mainMenu = new ToolStripMenuItem();
mainMenu.Text = xel.Attributes["descript"].Value;
menuS.Items.Add(mainMenu);
if (xml.HasChildNodes)
{
CreateSubMenuByElement(xel, mainMenu);
}
}
}
/// <summary>
/// 根据node节点递归创建菜单
/// </summary>
/// <param name="xNode"></param>
/// <param name="menuItem"></param>
public void CreateSubMenuByNode(XmlNode xNode, ToolStripMenuItem menuItem)
{
foreach (XmlNode xml in xNode.ChildNodes)
{
ToolStripMenuItem subMenu = new ToolStripMenuItem();
if (xml.ChildNodes.Count > 1)
{
subMenu.Text = xml.Attributes["descript"].Value;
menuItem.DropDown.Items.Add(subMenu);
CreateSubMenuByNode(xml, subMenu);
}
else
{
subMenu.Text = xml.InnerText;
menuItem.DropDown.Items.Add(subMenu);
}
}
}
/// <summary>
/// 根据元素节点递归创建菜单
/// </summary>
/// <param name="xml"></param>
/// <param name="menuItem"></param>
public void CreateSubMenuByElement(XmlElement xml, ToolStripMenuItem menuItem)
{
foreach (XmlElement xel in xml.ChildNodes)
{
ToolStripMenuItem subMenu = new ToolStripMenuItem();
if (xel.ChildNodes.Count>1)
{
subMenu.Text = xel.Attributes["descript"].Value;
menuItem.DropDown.Items.Add(subMenu);
CreateSubMenuByElement(xel, subMenu);
}
else
{
subMenu.Text = xel.InnerText;
menuItem.DropDown.Items.Add(subMenu);
}
}
}
///
}
}
xml文件格式如下:
<?xml version="1.0" encoding="utf-8" ?>
<MangeTvMenu descript="管理">
<Add descript="添加">
<Employee>员工</Employee>
<Deptment>部门</Deptment>
</Add>
<EmployeeInfo descript="员工信息">
<BaseInfo>个人基本信息</BaseInfo>
<StudyInfo>学历信息</StudyInfo>
<MarryInfo>婚姻信息</MarryInfo>
</EmployeeInfo>
<DeptmentInfo descript="部门信息">
<dept1>部门1</dept1>
<dept2>部门2</dept2>
</DeptmentInfo>
<MoneyManage descript="工资管理">
<BaseMoney>基本工资</BaseMoney>
<OtherMoney>绩效工资</OtherMoney>
</MoneyManage>
<Apply descript="申请">
<AddWork>加班</AddWork>
<ApplyWeek>请假</ApplyWeek>
<AddMoney>加薪</AddMoney>
<Another>其他</Another>
</Apply>
</MangeTvMenu>
转载于:https://www.cnblogs.com/wanzhongjun/p/6388510.html
c# winform读取xml文件创建菜单的代码相关推荐
- Qt 读取XML文档的简单示例
目录名字 XML简介 Qt 操作XML文档一般方法 使用DOM读取XML文档 示例代码:读取XML文档 XML简介 XML(Extensible Markup Language,可扩展标记语言)是一种 ...
- 自己动手之使用反射和泛型,动态读取XML创建类实例并赋值
前言: 最近小匹夫参与的游戏项目到了需要读取数据的阶段了,那么觉得自己业余时间也该实践下数据相关的内容.那么从哪入手呢?因为用的是Unity3d的游戏引擎,思来想去就选择了C#读取XML文件这个小功能 ...
- 读取XML文档解析信息
dom4j是一个Java的XML API,用来读写XML文件.dom4j是一个非常优秀的Java XML API,具有性能优异.功能强大和极端易用的特点,同时它也是一个开放源代码的软件.使用dom4j ...
- HTML读取xml文件的三种办法
刚开始学这里的时候有点懵,以前没学过.但是学安卓动画(Animation)的时候接触过xml文件,总体来说不难. 一般来说xml文件用来储存数据,然后html读取它,主要介绍三种读取方式 利用CSS读 ...
- c#读取xml文件配置文件Winform及WebForm-Demo具体解释
我这里用Winform和WebForm两种为例说明怎样操作xml文档来作为配置文件进行读取操作. 1.新建一个类,命名为"SystemConfig.cs".代码例如以下: < ...
- c#读取xml文件配置文件Winform及WebForm-Demo详解
我这里用Winform和WebForm两种为例说明如何操作xml文档来作为配置文件进行读取操作. 1.新建一个类,命名为"SystemConfig.cs",代码如下: <sp ...
- paip.获取proxool的配置 xml读取通过jdk xml 初始化c3c0在代码中总结
paip.获取proxool的配置 xml读取通过jdk xml 初始化c3c0在代码中 xml读取通过jdk xml 初始化c3c0在代码中.. ... 作者Attilax 艾龙, EMAIL ...
- 创建带有关联的 XML 架构的 XML 文件 从 XML 文件创建 XML 架构
一.创建带有关联的XML 架构的XML 文件 1.创建新的 Windows 应用程序项目 首先需要在 Visual Basic 或 Visual C# 中创建新的 Windows 应用程序.创建一个新 ...
- C#中常用的几种读取XML文件的方法
XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖于内 ...
最新文章
- Javascript - prototype、__proto__、constructor
- Erlang列表操作里面的变量绑定规则
- JS 获取 鼠标 坐标
- Python 在线免费批量美颜,妈妈再也不用担心我 P 图两小时啦
- AndroidStudio安装教程(Windows环境下)
- 用最简单直白的人类语言解释下jsonP到底是什么鬼
- div旋转45度_一看就会,一做不废的旋转楼梯建模
- PHP在线预览word、excel等office文档
- java 读取文件内容 方法
- 《专业主义》阅读摘要——作者:大前研一
- linux系统格式化硬盘
- 2019-08-27-Seo基础知识
- lncRNASNP:SNP位点对lncNA结构和lncRNA-miRNA影响的数据库
- HTNL常见的标签及属性 和w3school的使用
- 这个高仿小米商城项目太惊艳了
- 什么是promise,promise的用法。
- 压缩png命令cmd_使用pngquant工具对PNG格式图片进行压缩
- 内卷室友系列 -- day01 计算机网络概论
- 我的2019秋招记忆(完整版) | 掘金技术征文
- 12月上海Cloudera Hadoop大数据培训:CCAH、CCDH
热门文章
- shiro-cas------自定义登录页面
- 计算机组成原理试卷分析,《计算机组成原理与汇编语言》试卷分析报告.doc.docx...
- oracle sql中打印,在Oracle SQL Developer SQL工作表窗口中打印文本
- python 找到装饰器_Python 装饰器的总结(一)
- mysql数据库学习6_MySQL学习(六)
- 回归分析什么时候取对数_技术派|SPSS数据分析心得小结及心得分享!必备收藏...
- 【数据库原理实验(openGauss)】实验报告
- 大数据各组件默认端口
- milvus入门学习
- flinkTime与Window入门详解