}
if (node.Nodes.Count > 0)
{
this.LocateNodeWithValue(node.Nodes, nodeValue);
}
}
}
// 删除上述方法定位到的节点
private void DeleteNode(TreeNodeCollection nodes, string valueToDelete)
{
foreach (TreeNode node in nodes)
{
if (node.Tag.ToString() == valueToDelete)
{
nodes.Remove(node);
this.listNodesLocated.Items.Remove(node.Text);
}
else if (node.Nodes.Count > 0)
{
this.DeleteNode(node.Nodes, valueToDelete);
} } } 保存TreeView的节点到XML文件中 把编辑后的TreeView
中的TreeNode类型的节点转换成XmlNode类型节点保存到XML文件中,该XML文件就是最初选择加载的XML文件,在保存之前要先删除XML
中TestTreeView根节点下的所有子节点,主要方法如下:
// 保存主方法
private void SaveTreeNodes(string filePath)
{
if (this.xmlDoc != null)
{
XmlNode root = this.xmlDoc.SelectSingleNode("TestTreeView");
// 删除根节点下的所有原有节点
root.RemoveAll();
this.ConvertTreeNodesToXmlNodes(this.treeMain.Nodes, root);
this.xmlDoc.Save(this.strXmlPath);
MessageBox.Show("保存成功!", "信息", MessageBoxButtons.OK, rmation); }
}
// 把TreeNode转换成对应的XmlNode
private void ConvertTreeNodesToXmlNodes(TreeNodeCollection treeNodes, XmlNode xmlNode) {
XmlDocument doc = xmlNode.OwnerDocument;
foreach (TreeNode treeNode in treeNodes)
{
XmlNode newElement = null;
XmlAttribute attrValue = null;
newElement = doc.CreateNode(XmlNodeType.Element, "TestNode", "");
// Set "nodeText"
attrValue = doc.CreateAttribute("nodeText");
attrValue.Value = treeNode.Text;
newElement.Attributes.Append(attrValue); // Set "nodeValue" attrValue = doc.CreateAttribute("nodeValue"); attrValue.Value = treeNode.Tag.ToString(); newElement.Attributes.Append(attrValue);
xmlNode.AppendChild(newElement);
if (treeNode.Nodes.Count > 0)
{
this.ConvertTreeNodesToXmlNodes(treeNode.Nodes, newElement);
}
}
}
这个Demo中的有些方法还有待改善,希望大家多给意见!
这是本人的第一篇Blog文章,从今天起我要坚持写一些东西,把在工作中用到的方法以及问题整理出来,和大家分享,借此机会来巩固自己的所学的知识,也希望能交到很多志同道合的朋友!谢谢