[英]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.