winform讀取圖片并顯示,c# winform讀取xml文件創建菜單的代碼

 2023-12-06 阅读 25 评论 0

摘要:動態創建菜單使得程序靈活性大大增加,本文根據讀取xml文件中的配置菜單項來動態創建菜單,代碼如下 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;

動態創建菜單使得程序靈活性大大增加,本文根據讀取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

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/191865.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息