[英]How can I make a dynamic treeview in c#?
我正在使用一个系统,并且有一个树形视图,其中必须包含对象的项目结构。 该结构如下所示:
Project
|- Module1
| |- Xml1
| | |- Element
| | |- Element
| | | |- Element
| | | |- Element
| | | | |- Element
| | | |
| | | |- Element
| | |
| | |- Element
| |
| |- Xml2
| |- Element
|
|- Module2
|- Xml1
|- Element
等等..
现在,当我想将Xml文件添加到模块中时,这很容易,因为我知道它上面有2个节点。 (项目,模块)在C#中:
public void AddXmlToTree(string xmlFile)
{
projectTreeView.Nodes[0].LastNode.Nodes.Add(xmlFile);
}
注意:我使用LastNode是因为我按树的顺序添加它们。
现在的问题是:每个元素都可以有另一个元素,因此基本上是无限的。 我不能仅仅制作一百万种这样的方法。 我可能需要一些其他递归方法。
我想我需要获取最后添加的Element对象的Node,以便可以向其添加下一个Element节点,但我不知道如何获取它。
希望你能理解我的问题。
完全未经测试,但可以用作指导:
private void AddNodesRecursive(TreeNode parent, object childData)
{
string strChildNode = string.Empty;
XmlElement childDoc = null;
if (parent != null)
{
if ((childData as string) != null)
{
parent.ChildNodes.Add(new TreeNode((childData as string)));
return;
}
childDoc = childData as XmlElement;
if (childDoc != null)
{
TreeNode subParent = new TreeNode(childDoc.InnerText);
parent.ChildNodes.Add(subParent);
foreach (XmlElement grandChild in childDoc.ChildNodes)
AddNodesRecursive(subParent, grandChild);
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.