Bir ağaç izleme denetimine sahibim ve bu ana bilgisayardaki tek bir ana düğüm ve birkaç alt düğüm içerir. Ana ebeveynin tüm çocuk düğümlerinin bir dizisini veya listesini elde etmenin bir yolu var mı? diğer bir deyişle, tüm düğümleri treeview.nodes [0] veya ilk ana düğümden alma.Görsel C# bir ağaç görünümü denetiminde bir üst düğümü tüm alt düğümleri listeleniyor
7
A
cevap
6
Böyle yinelemeli bir listeye ekleyebilirsiniz:
List<TreeNode> Nodes = new List<TreeNode>();
AddChildren(Nodes, treeView1.Nodes[0]);
-2
Sen
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 bu bağlantıdaki alook alacağını .. ağaç görünümünde tüm düğümleri almak için .. Böyle bir şey yapabilirdi.
9
public IEnumerable<TreeNode> GetChildren(TreeNode Parent)
{
return Parent.Nodes.Cast<TreeNode>().Concat(
Parent.Nodes.Cast<TreeNode>().SelectMany(GetChildren));
}
bu kodu için teşekkür ederiz:
Sonra kök düğüm bu rutin geçmesini çağrı ! Foreach değiştirmek için değiştirmek zorunda kaldı, bunun gibi: foreach (Node.ChildNodes içinde TreeNode thisNode) <- Node.ChildNode yerine Node.Nodes –
@Svein çünkü WPF kullanıyorsunuz ama bu kod WinForms için . WinForms’da ChildNodes yok. –
Ah, tamam, kötüyüm! Yinede teşekkürler :) –