使用XML文件动态更新菜单项

菜单项经常需要更新的情况下,使用XML文件作为数据库来存储记录是非常有用的。例如,当菜单项需要频繁更新时,可以通过XML文件来实现。本文将提供一个简单的例子,以帮助理解如何实现这一功能。

要理解以下步骤,需要具备XMLTreeView控件以及Visual Studio的基础知识。

使用代码

注意:附带的解决方案文件(xml2treeviewmenuSolution)是使用VS2010创建的。

将一个XML文件添加到项目中,并命名为"menu.xml"。编辑XML文件,添加菜单项

<?xml version="1.0" encoding="utf-8"?> <root> <folder title='folder 1a'> <record title='record 1a1'/> <record title='record 1a2'/> </folder> <folder title='folder 1b'> <record title='record 1b1'/> </folder> <folder title='folder 2a'> <record title='record 2a1'/> </folder> <folder title='folder 3a'> <record title='record 3a1'/> <record title='record 3a2'/> </folder> </root>

Visual Studio工具箱中拖动TreeView控件到Windows表单上。在这个例子中,将控件命名为"treeViewMenu"。

using System.Xml; using System.Xml.XPath; public partial class Form1 : Form { private XmlDocument docXML = new XmlDocument(); }

当窗体加载时,加载XML文档,并开始填充TreeView控件。

private void Form1_Load(object sender, EventArgs e) { docXML.Load("menu.xml"); populateBaseNodes(); }

填充从第一级<folder>节点开始。在每个基础节点添加到树中之后,为其添加子节点。

private void populateBaseNodes() { treeViewMenu.Nodes.Clear(); treeViewMenu.BeginUpdate(); TreeNode treenode; treenode = treeViewMenu.Nodes.Add("Folders"); XmlNodeList baseNodeList = docXML.SelectNodes("root/folder"); foreach (XmlNode xmlnode in baseNodeList) { string title = xmlnode.Attributes["title"].Value; treenode = treeViewMenu.Nodes.Add(title); populateChildNodes(xmlnode, treenode); } treeViewMenu.EndUpdate(); treeViewMenu.Refresh(); }

每个子节点将被检查是否有进一步的子节点。对于找到的每个子节点,循环将被调用。

private void populateChildNodes(XmlNode oldXmlnode, TreeNode oldTreenode) { TreeNode treenode = null; XmlNodeList childNodeList = oldXmlnode.ChildNodes; foreach (XmlNode xmlnode in childNodeList) { string title = xmlnode.Attributes["title"].Value; treenode = oldTreenode.Nodes.Add(title); populateChildNodes(xmlnode, treenode); } }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485