簡體   English   中英

如何確定深度級別如何將子節點添加到樹視圖?

[英]How can I add child nodes to a treeview with deciding the depth level?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Treeview_Test
{
    public partial class Form1 : Form
    { 
        int numberofroots = 1000;
        int childsnum = 50;
        int leveldepth = 0;

        public Form1()
        {
            InitializeComponent();

            AddNodes();
        }

        private void AddNodes()
        {
            advancedTreeView1.Nodes.Clear();

            for (int i = 0; i < numberofroots; i++)
            {
                advancedTreeView1.Nodes.Add("New Node " + i.ToString());

                TreeNode subnode = advancedTreeView1.Nodes[i];

                if(allRootsWithChilds.Checked)
                {
                    subnode.Nodes.Add("New Node " + i.ToString());
                }
                else
                {
                    if (i < childsnum)
                    {
                        subnode.Nodes.Add("New Node " + i.ToString());
                    }
                }
            }
        }

        private void allRootsWithChilds_CheckedChanged(object sender, EventArgs e)
        {
                AddNodes();
        }
    }
}

現在,如果選中此復選框,它將向所有根節點添加一個子節點。 所有1000個根節點都將有一個子節點。 如果未選中,則1000個根節點中只有前50個根節點將有一個子節點。

我現在想做的是,是否選中此復選框,否則根節點只有一個孩子,我想確定深度級別。 例如,如果深度級別為1,則前50個根節點或所有根節點將有一個子節點。

但是,如果深度級別例如為4,則每個根節點(如果其為50)或全部將具有4個子節點:

Node0
  Node1
    Node2
      Node3
        Node4
Node1
  Node1
    Node2
      Node3
        Node4
....
Node49
  Node1
    Node2
      Node3
        Node4

變量childsnum決定將有多少個根節點有孩子。 變量leveldepth應該決定將子級添加到每個根節點的深度。 然后,我想添加另一個int變量來決定每個級別上有多少個孩子。

例如,在級別3中,每個根節點將有50個節點。 在級別1,每個根節點只有1個節點。

我認為您所缺少的只是繼續將子級添加到下一個節點的邏輯。 您要做的就是根據leveldepth的值創建另一個循環,並在循環中繼續將subNode設置subNode等於subNode.Nodes[0]

請注意,我們還可以使用Nodes.Add的返回值(這是我們剛剛添加的節點)來設置subnode節點變量:

private void AddNodes()
{
    advancedTreeView1.Nodes.Clear();

    for (int i = 0; i < numberOfRoots; i++)
    {
        TreeNode subnode = advancedTreeView1.Nodes.Add("New Node " + i);

        if (allRootsWithChilds.Checked || i < childCount)
        {
            for (int j = 0; j < depthLevel; j++)
            {
                // Add a new child node and set subnode to the new node we just added
                subnode = subnode.Nodes.Add(subnode.Text);
            }
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM