Как добавить дочерний узел в динамически добавляемый дочерний узел - PullRequest
0 голосов
/ 13 января 2011

У меня есть вид дерева на моей главной форме

У меня есть код от формы к основному:

 Buttonclick

StrNode = string.Empty;
StrNode = "Batch" + Append.Batchcnt.ToString() + "(" + strSelectedClassCode + ")";
frmmain.loadFromForm(StrNode, true, strSelectedClassCode);

В основной форме у меня есть следующий код

public void loadFromForm(string strNode, bool bResult, string strStandardClsCode)
    {
        if (Append.oldbatchcontrol != strNode)
        {
            if (tvwACH.SelectedNode.Text == "FileHeader")
            {
                tvwACH.SelectedNode.Nodes.Add(strNode);
            }
            if (tvwACH.SelectedNode.Text == "BatchHeader")
            {
                tvwACH.SelectedNode.Nodes.Add(strNode);// After this i have to add another node as a child to that added node and also if a node with particular name exists i would like to write the text with a count value appended
            }
  }
        }

Так что мое дерево должно выглядеть следующим образом

ACH
|->Some.txt
  |->Fileheader
    |->BatchHeader
       |->Batch1
          |->Entry1
          |->Entry2 and so on // These two should be added dynamically after that Batch1

Ответы [ 2 ]

2 голосов
/ 13 января 2011

Используйте это вместо:

public void loadFromForm(string strNode, bool bResult, string strStandardClsCode)
    {
        if (Append.oldbatchcontrol != strNode)
        {
            if (tvwACH.SelectedNode.Text == "FileHeader")
            {
                tvwACH.SelectedNode.Nodes.Add(strNode);
            }
            if (tvwACH.SelectedNode.Text == "BatchHeader")
            {
                TreeNode node = tvwACH.SelectedNode.Nodes.Add(strNode,strNode);// After this i have to add another node as a child to that added node and also if a node with particular name exists i would like to write the text with a count value appended
                node.Nodes.Add(...);
            }
  }
}
1 голос
/ 13 января 2011

Обычно для построения дерева вам нужна рекурсивная функция.Например:

private void AddNode(NodeParent, Data)
{
    Node oNode;

    //Check if this is the first node
    if (NodeParent ==null)
    {
         oNode = new Node(Data.Name);
    }

    //Step though each child item in the data
    foreach(DataItem in Data)
    {
        //Add the node
         this.AddNode(oNode, DataItem);
    }

    oNode.Nodes.Add(new Node(Data));
}

Этот код является приблизительным руководством, но он должен дать вам представление.

...