C#TreeView控件与XML相关操作
2016-02-29 15:44
405 查看
在C#的应用开发中,TreeView控件是一种比较常用的控件,主要反映了父子节点之间的关系,由于TreeView控件与XML文件的组织结构比较类似,可以把TreeView控件与XML文件结合使用。TreeView控件普通操作,先定义节点,再插入节点,这里就不在赘述。主要介绍TreeView与XML文件一起使用的方法。
1.生成XML文件。
假设现在已经知道各个节点的上下级关系,可以通过递归生成一张树状关系图保存在XML文件中,这里我没有使用严格格式的XML文件,就直接把数据存入XML了,首先先创建TreeView的上下级关系,然后生成XML文件,TreeView控件名字为treeView。
只需要调用根节点的值就可以生成一张树状图存储到XML文件中
2.读取XML到TreeView控件中,也是通过递归函数实现这个功能
注意读取XML文件到TreeView中,XML不能含有特殊字符,比如像“(”,“)”括号字符或者其他特殊字符,传入XML的根节点与TreeView控件的节点即可。
在实际调用过程中先读取XML文件,在把XML的根节点选中即可。
3.如果说不愿意使用XML文件,想直接绑定生成TreeView也可以,只需要把返回值改一下即可。
1.生成XML文件。
假设现在已经知道各个节点的上下级关系,可以通过递归生成一张树状关系图保存在XML文件中,这里我没有使用严格格式的XML文件,就直接把数据存入XML了,首先先创建TreeView的上下级关系,然后生成XML文件,TreeView控件名字为treeView。
public XElement CreateTreeNodeSaveXML(string NodeName) //传入树状关系图的根节点名字 { XElement xe=new XElement(NodeName); List<string> ChildList=fun(NodeName) <span style="font-family:Times New Roman;"> //获取NodeName下面的子节点的数值存入List<string>之中,</span> foreach (var Child in ChildList) { xe.Add(CreateTreeNodeSaveXML(Child)); } return xe; }
} public void CreateXML() { XElement root= CreateTreeNodeSaveXML("RootNode"); //传入树状图的根节点的值RootNode string SavePath = Path.Combine(Application.StartupPath, @"配置文件/XML.xml"); root.Save(SavePath); }
只需要调用根节点的值就可以生成一张树状图存储到XML文件中
2.读取XML到TreeView控件中,也是通过递归函数实现这个功能
注意读取XML文件到TreeView中,XML不能含有特殊字符,比如像“(”,“)”括号字符或者其他特殊字符,传入XML的根节点与TreeView控件的节点即可。
public void bindXmlToTreeView(XmlNodeList nodeList, TreeNodeCollection treeNode) { foreach (XmlNode node in nodeList) { XmlElement xe = (XmlElement)node; TreeNode newTreeNode = new TreeNode(); //定义新的节点 newTreeNode.Text = xe.Name; //XML节点名字给TreeView节点 treeNode.Add(newTreeNode); if (node.HasChildNodes) { bindXmlToTreeView(node.ChildNodes, newTreeNode.Nodes); } } }
在实际调用过程中先读取XML文件,在把XML的根节点选中即可。
XmlDocument xmlDoc = new XmlDocument(); XmlNodeList currentXmlNodeList = null; string LoadPath = Path.Combine(Application.StartupPath, @"配置文件/XML.xml"); xmlDoc.Load(LoadPath); currentXmlNodeList = xmlDoc.SelectNodes("RootNode");//RootNode为XML文件根节点的名字 bindXmlToTreeView(currentXmlNodeList, treeView.Nodes);
3.如果说不愿意使用XML文件,想直接绑定生成TreeView也可以,只需要把返回值改一下即可。
public TreeNode CreateTreeNode(string NodeName) { TreeNode Tr = new TreeNode(NodeName); List<string> ChildList = fun(NodeName);//计算NodeName节点的子节点的值 foreach (var Child in ChildList) { Tr.Nodes.Add(CreateTreeNode(Child)); } return Tr; }在实际调用的过程中调用函数,给定根节点的值,再加载即可。
TreeNode root = CreateTreeNode("RootName"); treeView.Nodes.Add(root);
相关文章推荐
- C# Winform项目中多线程环境下, 如何跨线程对Window窗体控件进行安全访问?
- 关于C#在删除文件时权限问题
- c# WebClient Get Post 方法
- c# DES加密解密
- c# WebClient文件下载
- C# 进程(应用程序)间通信
- C# 构建XML(简单示例)
- c# 获取Graphic方法
- C# 保留2位小数
- C# 窗体常用API函数 应用程序窗体查找
- C#利用反射来判断对象是否包含某个属性的实现方法
- C#获取 URL参数
- C#委托与事件的简单使用
- C#定时器和事件
- vs2010 创建和C#使用动态链接库(dll)
- C#清理非托管对象实例分析
- 【C#进阶系列】01 CLR的执行模型——一个Hello World的故事
- CreateProcessAsUser,C#写的windows服务弹框提示消息或者启动子进程
- [C#解惑] #2 对象的初始化顺序
- C#找质数(素数)厄拉多塞筛法