public void LoadXml()
        {
            MenuList.Clear();

            m_Doc = XDocument.Load(m_Path);

            if (m_Doc != null)
            {
                List <XElement> lst = m_Doc.Root.Elements("Menu").ToList();

                for (int i = 0; i < lst.Count; i++)
                {
                    long   menuID   = long.Parse(lst[i].Attribute("MenuId").Value);
                    string menuName = lst[i].Attribute("MenuName").Value;
                    bool   hasChild = bool.Parse(lst[i].Attribute("HasChild").Value);

                    MyMenu menu = new MyMenu();
                    menu.MenuId   = menuID;
                    menu.MenuName = menuName;
                    menu.HasChild = hasChild;

                    if (hasChild)
                    {
                        List <MyProto> lstProto = GetProtoListByMenuName(menuID);
                        if (lstProto != null)
                        {
                            menu.ProtoList.AddRange(lstProto);
                        }
                    }

                    MenuList.Add(menu);
                }
            }
        }
        public void UpdateMenu(MyMenu menu)
        {
            int      index = 0;
            XElement xe    = GetXElementByID(menu.MenuId, out index);

            if (xe == null)
            {
                return;
            }
            xe.Attribute("MenuName").SetValue(menu.MenuName);
        }
        public void DeleteMenu(MyMenu menu)
        {
            int      index = 0;
            XElement xe    = GetXElementByID(menu.MenuId, out index);

            if (xe == null)
            {
                return;
            }

            xe.Remove();

            MenuList.Remove(menu);
        }
        public bool MoveMenu(MyMenu menu, bool isPrev)
        {
            //元素的索引
            int      index = 0;
            XElement xe    = GetXElementByID(menu.MenuId, out index);

            if (isPrev)
            {
                //上移
                if (index == 0)
                {
                    MessageBox.Show("已经是第一个");
                    return(false);
                }

                int toIndex = index - 1;

                XElement prev = GetXElementByIndex(toIndex);
                prev.AddBeforeSelf(xe);
                xe.Remove();
            }
            else
            {
                //下移
                if (index == m_Doc.Root.Elements("Menu").ToList().Count - 1)
                {
                    MessageBox.Show("已经是最后一个");
                    return(false);
                }

                int      toIndex = index + 1;
                XElement next    = GetXElementByIndex(toIndex);
                next.AddAfterSelf(xe);
                xe.Remove();
            }

            return(true);
        }
        //====================================================================================

        #region 菜单操作
        public void AddMenu(MyMenu menu)
        {
            XElement xe = new XElement("Menu", new XAttribute("MenuId", menu.MenuId), new XAttribute("MenuName", menu.MenuName), new XAttribute("HasChild", menu.HasChild));

            m_Doc.Root.Add(xe);
        }