Список всех дочерних узлов родительского узла в элементе управления treeview в Visual C#
У меня есть элемент управления treeview, и он содержит один родительский узел и несколько дочерних узлов от этого родителя. Есть ли способ получить массив или список всех дочерних узлов от главного родителя? т. е. получение всех узлов из treeview.узлы[0] или первый родительский узел.
3 ответов
Вы можете добавить в список рекурсивно следующим образом:
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]);
public IEnumerable<TreeNode> GetChildren(TreeNode Parent)
{
return Parent.Nodes.Cast<TreeNode>().Concat(
Parent.Nodes.Cast<TreeNode>().SelectMany(GetChildren));
}
вы могли бы сделать нечто подобное .. чтобы получить все узлы в дереве ..
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);
}
}
вы бы pls взять alook по этой ссылке .