您的位置:首页 > 编程语言 > C#

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。

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);



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: