最近在一个项目中遇到处理树状层次关系的数据,于是就暂时使用了TreeView来实现,我把其中的主要功能提了出来做成了一个Demo程序,在这里和大家分享,希望各位多多指教。下面就是实现的主要功能以及源码下载。
- 读取XML文件中的树状结构数据,并用TreeView控件呈现
- 在相同层级中前后/上下移动节点
- 删除指定值的节点
- 把TreeView的节点存储到XML文件中
开发环境:Windows XP SP2, Visual Studio 2005 with SP1
XML数据的组织结构
我的XML数据结构如下所示:
<?
xml version="1.0" encoding="utf-8"
?>
< TestTreeView >
< TestNode nodeText ="Test1" nodeValue ="a" />
< TestNode nodeText ="Test2" nodeValue ="b" >
< TestNode nodeText ="Test3" nodeValue ="c" >
< TestNode nodeText ="Test4" nodeValue ="d" />
< TestNode nodeText ="Test5" nodeValue ="e" />
</ TestNode >
< TestNode nodeText ="Test6" nodeValue ="f" />
</ TestNode >
< TestNode nodeText ="Test7" nodeValue ="c" />
</ TestTreeView >
< TestTreeView >
< TestNode nodeText ="Test1" nodeValue ="a" />
< TestNode nodeText ="Test2" nodeValue ="b" >
< TestNode nodeText ="Test3" nodeValue ="c" >
< TestNode nodeText ="Test4" nodeValue ="d" />
< TestNode nodeText ="Test5" nodeValue ="e" />
</ TestNode >
< TestNode nodeText ="Test6" nodeValue ="f" />
</ TestNode >
< TestNode nodeText ="Test7" nodeValue ="c" />
</ TestTreeView >
其中"nodeText"为在TreeView中显示的节点文本,"nodeValue"为该节点实际存储的值,而" a,b,c,d,e,f "为预定义的6个测试值
用TreeView控件呈现XML数据
把上述的XML文件的数据呈现到TreeView控件中主要使用了如下的递归处理:
变量
#region 变量
private bool enabled = false;
private string strXmlPath = null;
private XmlDocument xmlDoc = null;
#endregion
方法 #region 方法
/**//// <summary>
/// 根据XML文件加载树节点
/// </summary>
/// <param name="xmlPath">要加载的XML文件路径</param>
private void LoadTreeNodes(string xmlPath)
...{
this.xmlDoc =
private bool enabled = false;
private string strXmlPath = null;
private XmlDocument xmlDoc = null;
#endregion
方法 #region 方法
/**//// <summary>
/// 根据XML文件加载树节点
/// </summary>
/// <param name="xmlPath">要加载的XML文件路径</param>
private void LoadTreeNodes(string xmlPath)
...{
this.xmlDoc =