繁体   English   中英

如何在C#中创建动态树视图?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM