积极答复者
如何生成树形框效率好一些?

问题
答案
-
自定义一个方法,根据节点去判断是否还有子节点,如果有添加到TreeView控件的相关父节点下。
这里有个链接供你参考:
http://support.microsoft.com/kb/317597
我摘要里面的主要代码,方便你查看:
private void button1_Click(object sender, EventArgs e) { try { // 1. 加载XML文档 XmlDocument dom = new XmlDocument(); dom.Load(@"C:\Users\v-zyue\Desktop\as.XML"); // 2. 先清空TreeView 的节点 treeView1.Nodes.Clear(); treeView1.Nodes.Add(new TreeNode(dom.DocumentElement.Name)); TreeNode tNode = new TreeNode(); tNode = treeView1.Nodes[0]; // 3. 添加XML的节点到TreeView中。 AddNode(dom.DocumentElement, tNode); treeView1.ExpandAll(); } catch (XmlException xmlEx) { MessageBox.Show(xmlEx.Message); } catch (Exception ex) { MessageBox.Show(ex.Message); } } /// <summary> /// 自定义的方法,遍历XML文档的节点 /// </summary> /// <param name="XML的节点"></param> /// <param name="TreeView 的节点"></param> private void AddNode(XmlNode inXmlNode, TreeNode inTreeNode) { XmlNode xNode; TreeNode tNode; XmlNodeList nodeList; int i; // 循环遍历给定节点的所有子节点 // 添加XML的节点到TreeView节点。 if (inXmlNode.HasChildNodes) { nodeList = inXmlNode.ChildNodes; for(i = 0; i<=nodeList.Count - 1; i++) { xNode = inXmlNode.ChildNodes[i]; inTreeNode.Nodes.Add(new TreeNode(xNode.Name)); tNode = inTreeNode.Nodes[i]; AddNode(xNode, tNode); } } else { // 如果给定的节点没有子节点,那么就将该节点的名字和相关的属性值赋值给TreeView 节点 inTreeNode.Text = (inXmlNode.OuterXml).Trim(); } }
希望能帮得到您。Best Regards,
Rocky Yue[MSFT]
MSDN Community Support | Feedback to us
- 已标记为答案 Lie YouModerator 2012年3月5日 2:43
-
dear
当不知子结构有几层时,可以使用递廻
秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
- 已标记为答案 Lie YouModerator 2012年3月5日 2:43
全部回复
-
自定义一个方法,根据节点去判断是否还有子节点,如果有添加到TreeView控件的相关父节点下。
这里有个链接供你参考:
http://support.microsoft.com/kb/317597
我摘要里面的主要代码,方便你查看:
private void button1_Click(object sender, EventArgs e) { try { // 1. 加载XML文档 XmlDocument dom = new XmlDocument(); dom.Load(@"C:\Users\v-zyue\Desktop\as.XML"); // 2. 先清空TreeView 的节点 treeView1.Nodes.Clear(); treeView1.Nodes.Add(new TreeNode(dom.DocumentElement.Name)); TreeNode tNode = new TreeNode(); tNode = treeView1.Nodes[0]; // 3. 添加XML的节点到TreeView中。 AddNode(dom.DocumentElement, tNode); treeView1.ExpandAll(); } catch (XmlException xmlEx) { MessageBox.Show(xmlEx.Message); } catch (Exception ex) { MessageBox.Show(ex.Message); } } /// <summary> /// 自定义的方法,遍历XML文档的节点 /// </summary> /// <param name="XML的节点"></param> /// <param name="TreeView 的节点"></param> private void AddNode(XmlNode inXmlNode, TreeNode inTreeNode) { XmlNode xNode; TreeNode tNode; XmlNodeList nodeList; int i; // 循环遍历给定节点的所有子节点 // 添加XML的节点到TreeView节点。 if (inXmlNode.HasChildNodes) { nodeList = inXmlNode.ChildNodes; for(i = 0; i<=nodeList.Count - 1; i++) { xNode = inXmlNode.ChildNodes[i]; inTreeNode.Nodes.Add(new TreeNode(xNode.Name)); tNode = inTreeNode.Nodes[i]; AddNode(xNode, tNode); } } else { // 如果给定的节点没有子节点,那么就将该节点的名字和相关的属性值赋值给TreeView 节点 inTreeNode.Text = (inXmlNode.OuterXml).Trim(); } }
希望能帮得到您。Best Regards,
Rocky Yue[MSFT]
MSDN Community Support | Feedback to us
- 已标记为答案 Lie YouModerator 2012年3月5日 2:43
-
dear
当不知子结构有几层时,可以使用递廻
秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
- 已标记为答案 Lie YouModerator 2012年3月5日 2:43