1

私はシステムで作業していて、オブジェクトからのプロジェクト構造を含まなければならないツリービューを持っています。この構造は次のようになります。

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

等..

Xmlファイルをモジュールに追加したい場合、その上に2つのノードがあることがわかっているので、簡単です。(プロジェクト、モジュール)in c#:

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

注:LastNodeを使用しているのは、ツリーの順に追加するためです。

ここで問題:すべての要素が別の要素を持つことができるので、基本的に無制限です。私はそのような百万の方法を作ることはできません。これには、おそらく再帰的な方法のために何か他のものが必要です。

最後に追加されたElementオブジェクトのノードを取得して、次の要素ノードをこれに追加できるようにする必要があると思います。取得方法がわかりません。

私の質問をご理解いただければ幸いです。

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 に答える