当前位置: 移动技术网 > IT编程>开发语言>c# > c# winform读取xml文件创建菜单的代码

c# winform读取xml文件创建菜单的代码

2019年07月18日  | 移动技术网IT编程  | 我要评论
复制代码 代码如下:using system;using system.collections.generic;using system.componentmodel;us
复制代码 代码如下:

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>

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网