c# winform讀取xml文件創(chuàng)建菜單的代碼
更新時(shí)間:2013年09月17日 15:52:00 作者:
動(dòng)態(tài)創(chuàng)建菜單使得程序靈活性大大增加,本文根據(jù)讀取xml文件中的配置菜單項(xiàng)來(lái)動(dòng)態(tài)創(chuàng)建菜單,代碼如下
復(fù)制代碼 代碼如下:
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:根據(jù)XmlElement創(chuàng)建菜單
//XmlNode node = xmlHelper.GetXmlNode(xmlFileName, "http://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:根據(jù)XmlNode創(chuàng)建菜單
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>
/// 根據(jù)node節(jié)點(diǎn)遞歸創(chuàng)建菜單
/// </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>
/// 根據(jù)元素節(jié)點(diǎn)遞歸創(chuàng)建菜單
/// </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文件格式如下:
復(fù)制代碼 代碼如下:
<?xml version="1.0" encoding="utf-8" ?>
<MangeTvMenu descript="管理">
<Add descript="添加">
<Employee>員工</Employee>
<Deptment>部門(mén)</Deptment>
</Add>
<EmployeeInfo descript="員工信息">
<BaseInfo>個(gè)人基本信息</BaseInfo>
<StudyInfo>學(xué)歷信息</StudyInfo>
<MarryInfo>婚姻信息</MarryInfo>
</EmployeeInfo>
<DeptmentInfo descript="部門(mén)信息">
<dept1>部門(mén)1</dept1>
<dept2>部門(mén)2</dept2>
</DeptmentInfo>
<MoneyManage descript="工資管理">
<BaseMoney>基本工資</BaseMoney>
<OtherMoney>績(jī)效工資</OtherMoney>
</MoneyManage>
<Apply descript="申請(qǐng)">
<AddWork>加班</AddWork>
<ApplyWeek>請(qǐng)假</ApplyWeek>
<AddMoney>加薪</AddMoney>
<Another>其他</Another>
</Apply>
</MangeTvMenu>
相關(guān)文章
C#數(shù)據(jù)庫(kù)操作類(lèi)AccessHelper實(shí)例
這篇文章主要介紹了C#數(shù)據(jù)庫(kù)操作類(lèi)AccessHelper實(shí)例,可實(shí)現(xiàn)針對(duì)access數(shù)據(jù)庫(kù)的各種常見(jiàn)操作,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-10-10
C#中把Json數(shù)據(jù)轉(zhuǎn)為DataTable
這篇文章介紹了C#中把Json數(shù)據(jù)轉(zhuǎn)為DataTable的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04
C#實(shí)現(xiàn)的AES加密解密完整實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)的AES加密解密,結(jié)合完整實(shí)例形式分析了C#實(shí)現(xiàn)的AES算法進(jìn)行加密與解密的相關(guān)技巧,需要的朋友可以參考下2016-07-07
簡(jiǎn)單實(shí)現(xiàn)winform編輯器
這篇文章主要教大家如何簡(jiǎn)單實(shí)現(xiàn)winform編輯器,功能很簡(jiǎn)單,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
c#通過(guò)進(jìn)程調(diào)用cmd判斷登錄用戶(hù)權(quán)限代碼分享
最近自己開(kāi)發(fā)軟件需要讀取本地配置文件,因?yàn)榈卿浻脩?hù)的權(quán)限不夠會(huì)導(dǎo)致無(wú)法讀取文件進(jìn)而導(dǎo)致程序崩潰,查了一些解決方法,代碼分享如下2013-12-12

