1

我正在开发一个系统,并且我有一个必须包含来自对象的项目结构的树视图。这个结构看起来像这样:

Project
 |- Module1
 |    |- Xml1
 |    |    |- Element
 |    |    |- Element
 |    |    |    |- Element
 |    |    |    |- Element
 |    |    |    |    |- Element
 |    |    |    |
 |    |    |    |- Element
 |    |    |
 |    |    |- Element
 |    |
 |    |- Xml2
 |         |- Element
 |
 |- Module2
      |- Xml1
           |- Element

ETC..

现在,当我想将 Xml 文件添加到模块时很容易,因为我知道它上面有 2 个节点。c# 中的(项目,模块):

public void AddXmlToTree(string xmlFile)
{
     projectTreeView.Nodes[0].LastNode.Nodes.Add(xmlFile);
}

注意:我使用 LastNode 因为我按树的顺序添加它们。

现在的问题是:每个元素都可以有另一个元素,所以它基本上是无限的。我不能只做一百万种这样的方法。我需要一些别的东西,也许是一些递归方法。

我想我需要获取最后添加的元素对象的节点,以便我可以将下一个元素节点添加到这个我只是不知道如何获取它。

我希望你能理解我的问题。

4

1 回答 1

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);
        }
    }
}
于 2012-09-21T08:18:05.830 回答