TreeView
denetiminde tüm ağaç düğümlerinin (her düzeyde) bir listesini nasıl alabilirim?TreeView Denetimleri'nde tüm ağaç düğümlerinin (tüm düzeylerde) bir listesini alın
cevap
Bir kök düğüme sahip bir ağacınız varsayarsak, aşağıdaki kod her zaman ağaç düğümlerini en derinlere kadar döngüden geçirir, ardından bir düzey geri gider. Her düğümün metnini basacaktır. Krumelur cevabı
TreeNode oMainNode = oYourTreeView.Nodes[0];
PrintNodesRecursive(oMainNode);
public void PrintNodesRecursive(TreeNode oParentNode)
{
Console.WriteLine(oParentNode.Text);
// Start recursion on all subnodes.
foreach(TreeNode oSubNode in oParentNode.Nodes)
{
PrintNodesRecursive(oSubNode);
}
}
Güncellemesi (kafamın üstünden Test edilmemiş) (bu his/her çözümün 2 ilk satırları değiştirin): Her ihtimale karşı
foreach (var node in oYourTreeView.Nodes)
{
PrintNodesRecursive(node);
}
Evet, o zaman, eğer çeşitli kökler varsa, tüm alt temaları tükürecektir. Ama gerçekten: birkaç düğüm olan bir ağaç gerçekten nadiren doğada :-) Oh, ve "onun";) – Krumelur
Aslında, doğada bu oldukça yaygın bir phaenommena :) Programlamada birkaç senaryo hayal edebiliyorum yararlı olduğu yerde. Örneğin: bir şirketin alt departmanlarını içeren, vb. Muhtemelen herhangi bir süper bölümün olmayacak. – dzendras
Haklısınız. Cevabımı ayarladık. Bir yazım hatası oldu. – Krumelur
Tembel LINQ yaklaşımı sen Şunun gibi bir şey arıyoruz:
İki ardışık genişletme yöntemi kullanabilirsiniz. Sen myTreeView.GetAllNodes()
veya myTreeNode.GetAllNodes()
çağırabilir ya: TreeView pek çok seviyesi vardır Çünkü
public static List<TreeNode> GetAllNodes(this TreeView _self)
{
List<TreeNode> result = new List<TreeNode>();
foreach (TreeNode child in _self.Nodes)
{
result.AddRange(child.GetAllNodes());
}
return result;
}
public static List<TreeNode> GetAllNodes(this TreeNode _self)
{
List<TreeNode> result = new List<TreeNode>();
result.Add(_self);
foreach (TreeNode child in _self.ChildNodes)
{
result.AddRange(child.GetAllNodes());
}
return result;
}
, özyinelemeli fonksiyon yapın:
foreach (TreeNode actualNode in treeView1.Nodes) // Begin with Nodes from TreeView
{
AddNodeAndChildNodesToList(actualNode);
}
: TreeView tüm ilk kademe Düğümler için bu işlevi çağırmak daha
public void AddNodeAndChildNodesToList(TreeNode node)
{
listBox1.Items.Add(node.Text); // Adding current nodename to ListBox
foreach (TreeNode actualNode in node.Nodes)
{
AddNodeAndChildNodesToList(actualNode); // recursive call
}
}
Kodu şuradan siteye C# TreeView
Eğer d Düğüm anahtarının benzersiz olması gerekmiyor, sadece düğüm düğmelerinin tümünü boş bir dizeye (""
) ayarlayın, daha sonra bir TreeView içindeki tüm düğümleri döndürmek için Treeview1.Nodes.Find("", true);
yapabilirsiniz.
- 1. Tüm oyun alanlarının bir listesini alın
- 2. Bir nesnenin tüm özellikleri listesini alın
- 3. Ağaç görünümü düğümlerinin derin kopyalama
- 4. WPF bir TreeView listesini saklama sıralanmış
- 5. Tüm tasarım dokümanlarını alın CouchDB
- 6. Tüm denetleyicilerin ve eylemlerin listesini alın laravel 5
- 7. Bir işlem için tüm DLL'leri alın
- 8. Dilimin tüm permütasyonlarını alın
- 9. Tüm satırları SQLite'den alın
- 10. Görsel C# bir ağaç görünümü denetiminde bir üst düğümü tüm alt düğümleri listeleniyor
- 11. Bir düğümün tüm özelliklerinin listesini libxml
- 12. ABRecordRef'in tüm özelliklerinin bir listesini nasıl alabilirim?
- 13. Git ile tüm Push'lerin bir listesini bulun
- 14. Güzel Çorba ile tüm HTML etiketleri alın
- 15. Genişleyen düğümü bir ağaç görünümünde alın
- 16. Tüm Uzak Değişkenleri Komut Dosyası Bloğuna Alın
- 17. JQL: Sprintlerin listesini alın
- 18. Geridönüşler arasında treeview düğümlerinin durumunu (genişletilmiş/daraltılmış) nasıl kaydederim?
- 19. state_machine durumlarının listesini alın
- 20. Tüm dizeleri resourcemanager kaynağından alın
- 21. Tam bir genel TreeView veri yapısı gibi oluşturma
- 22. Tüm tabloları info_schema'dan alın, MySQL
- 23. Tüm tablodan alın VE sıralama?
- 24. Twilio hesabınız için tüm numaraları alın
- 25. Tüm öğeleri bir diziden ilk alın ama
- 26. Bir uygulamanın tüm görünümlerini-her anı alın?
- 27. Bir ağx grafiğinde belirli bir düğüme bağlı tüm kenarları alın
- 28. Tüm alt düğümlerde ve klasördeki tüm simgelerde bir klasör simgesi nasıl alabilirim (sol taraftaki simge shoulbe)
- 29. Belirli bir gruba ait kişilerin listesini alın
- 30. Tüm tabloları ve tüm sütunları odbc veritabanından alın
Eğer bir cevaptan memnun iseniz, bunu kabul ettiniz. Teşekkürler. – Krumelur