2012-09-21 91 views
1

我正在研究一個系統,並且我有一個樹形視圖,它必須包含來自對象的項目結構 。 這種結構看起來是這樣的:如何在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對象的節點,所以 我可以將下一個節點添加到這個我只是不知道如何得到它。

我希望你能理解我的問題。

回答

0

都沒有測試,但是可以作爲方向:

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); 
     } 
    } 
} 
+0

感謝您的例子中,我得到了現在的工作。 –