Tôi có quyền kiểm soát treeview và nút này chứa một nút cha và một vài nút con từ cha mẹ đó. Có cách nào để có được một mảng hoặc danh sách của tất cả các nút con từ cha mẹ chính? nghĩa là nhận tất cả các nút từ treeview.nodes [0] hoặc nút cha đầu tiên.Liệt kê tất cả các nút con của nút cha trong điều khiển số lần xem trong Visual C#
7
A
Trả lời
6
Bạn có thể thêm vào một danh sách đệ quy như thế này:
public void AddChildren(List<TreeNode> Nodes, TreeNode Node)
{
foreach (TreeNode thisNode in Node.Nodes)
{
Nodes.Add(thisNode);
AddChildren(Nodes, thisNode);
}
}
Sau đó gọi qua thói quen này trong nút gốc:
List<TreeNode> Nodes = new List<TreeNode>();
AddChildren(Nodes, treeView1.Nodes[0]);
-2
Bạn có thể làm một cái gì đó như thế này .. để có được tất cả các nút trong cây xem ..
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);
}
}
bạn sẽ pls mất alook tại liên kết này.
9
public IEnumerable<TreeNode> GetChildren(TreeNode Parent)
{
return Parent.Nodes.Cast<TreeNode>().Concat(
Parent.Nodes.Cast<TreeNode>().SelectMany(GetChildren));
}
Cảm ơn bạn đã mã này ! Tôi đã phải thay đổi foreach để làm cho nó làm việc mặc dù, như thế này: foreach (TreeNode thisNode trong Node.ChildNodes) <- Node.ChildNodes thay vì Node.Nodes –
@Svein đó là bởi vì bạn đang sử dụng WPF nhưng mã này là dành cho WinForms . Không có ChildNodes trong WinForms. –
Ah, ok, xấu của tôi! Nhưng dù gì cũng cảm ơn :) –