Перечислите все дочерние узлы родительского узла в древовидном элементе управления в Visual C # - PullRequest
8 голосов
/ 02 октября 2011

У меня есть древовидный элемент управления, и он содержит один родительский узел и несколько дочерних узлов этого родителя. Есть ли способ получить массив или список всех дочерних узлов от основного родителя? то есть получение всех узлов из treeview.nodes [0] или первого родительского узла.

Ответы [ 3 ]

9 голосов
/ 02 октября 2011
public IEnumerable<TreeNode> GetChildren(TreeNode Parent)
{
    return Parent.Nodes.Cast<TreeNode>().Concat(
           Parent.Nodes.Cast<TreeNode>().SelectMany(GetChildren));
}
6 голосов
/ 02 октября 2011

Вы можете добавить в список рекурсивно, как это:

public void AddChildren(List<TreeNode> Nodes, TreeNode Node)
{
    foreach (TreeNode thisNode in Node.Nodes)
    {
        Nodes.Add(thisNode);
        AddChildren(Nodes, thisNode);
    }
}

Затем вызовите эту подпрограмму, передав в корневой узел:

List<TreeNode> Nodes = new List<TreeNode>();
AddChildren(Nodes, treeView1.Nodes[0]);
0 голосов
/ 02 октября 2011

Вы можете сделать что-то вроде этого ... чтобы получить все узлы в древовидном представлении ..

 private void PrintRecursive(TreeNode treeNode)
 {
     // Print the node.
      System.Diagnostics.Debug.WriteLine(treeNode.Text);
      MessageBox.Show(treeNode.Text);
      // Print each node recursively.
       foreach (TreeNode tn in treeNode.Nodes)
       {
           PrintRecursive(tn);
        }
 }

   // Call the procedure using the TreeView.
 private void CallRecursive(TreeView treeView)
 {
      // Print each node recursively.
        TreeNodeCollection nodes = treeView.Nodes;
         foreach (TreeNode n in nodes)
         {
             PrintRecursive(n);
          }
   }

Если бы вы посмотрели на эту ссылку.

http://msdn.microsoft.com/en-us/library/wwc698z7.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...