Mam kontrolę widoku drzewa i zawiera on jeden węzeł nadrzędny i kilka węzłów potomnych z tego rodzica. Czy istnieje sposób na uzyskanie tablicy lub listy wszystkich węzłów podrzędnych z głównego elementu nadrzędnego? tj. pobieranie wszystkich węzłów z treeview.nodes [0] lub pierwszego węzła nadrzędnego.Lista wszystkich węzłów podrzędnych węzła nadrzędnego w formantu widoku drzewa w języku Visual C#
7
A
Odpowiedz
6
Można dodać do listy rekurencyjnie tak:
public void AddChildren(List<TreeNode> Nodes, TreeNode Node)
{
foreach (TreeNode thisNode in Node.Nodes)
{
Nodes.Add(thisNode);
AddChildren(Nodes, thisNode);
}
}
Następnie nazwać to rutynowe przekazując węzła głównego:
List<TreeNode> Nodes = new List<TreeNode>();
AddChildren(Nodes, treeView1.Nodes[0]);
-2
Można zrobić coś takiego .. uzyskać wszystkie węzły w widoku drzewa ..
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);
}
}
byś pls wziąć alook pod tym linkiem.
9
public IEnumerable<TreeNode> GetChildren(TreeNode Parent)
{
return Parent.Nodes.Cast<TreeNode>().Concat(
Parent.Nodes.Cast<TreeNode>().SelectMany(GetChildren));
}
Dziękuję za ten kod ! Musiałem zmienić foreach, aby działało, jak na przykład: foreach (TreeNode thisNode w Node.ChildNodes) <- Node.ChildNodes zamiast Node.Nodes –
@Svein to dlatego, że używasz WPF, ale ten kod jest dla WinForms . W WinForm nie ma żadnych ChildNodes. –
Ah, ok, mój zły! Ale i tak dzięki :) –