c# winform读取xml文件创建菜单的代码
发布时间:2020-12-15 04:16:02 所属栏目:百科 来源:网络整理
导读:复制代码 代码如下: 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 Syst
复制代码 代码如下: 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#工程WinformMenuWinformMenuXML菜单.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> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |