2010-03-31 17 views
6

Bazı diğer işlemler için ağaç görünümü düğümlerini treenodecollection öğesine kopyalamaya çalışıyorum. Sonraki satırda treeview.nodes.clear()'u çalıştırdığımda, treenodecollection'm boş bırakılıyor. Ağaç izleme düğümlerini treenodecollection'a nasıl kopyalayacağınızı ve gerçek ağaç görünümü düğümlerini temizle yöntemini çağırdıktan sonra bile düğümlerin kopyalarını nasıl saklayabileceğinizi anlatabilir misiniz?Ağaç görünümü düğümlerinin derin kopyalama

TreeNodeCollection tnc = null; 
private TypeIn() 
{ 
     tnc = treeView1.Nodes; 
     treeView1.Nodes.Clear(); 
     //Now my tnc becomes null, but I want the tnc for future use. 
} 

cevap

3

TreeNode nesnesi tüm alt ağaç entire ile clonable geçerli:

şuna bir bakın. Bu yüzden orada kök alt düğümleri içeren Listeyi kullanabilirsiniz.

List<TreeNode> tnc = null; 
private TypeIn() 
{ 
     tnc = new List<TreeNode>(); 
     foreach (TreeNode n in treeView1.Nodes) 
     { 
      tnc.Add((TreeNode)n.Clone()); 
     } 
     treeView1.Nodes.Clear(); 

} 
+0

Stremlenye, Teşekkürler. Çözümünüz bizim için çalıştı. –

0

Ağacınızı serileştirerek ve bunu yeni bir nesne olarak serileştirerek derin bir kopya elde edebilirsiniz. How do you do a deep copy of an object in .NET (C# specifically)?

+0

TreeNodeCollection – Stremlenye

+0

Merhaba John, öneri için sayesinde seri hale getirilebilir değil. Ancak, TreeView nesnesi seri hale getirilebilen bir nesne olmadığından, yukarıdaki makalede sağlanan öneriyi kullanamıyoruz. Tüm ağaç görünümünde düğümler arasında geçiş yapmak ve gereksinim için bir Düğüm nesnesinin temel değer türlerinin değerlerini kopyalamak için bazı geri alma işlevleri yazabilirim. Ancak bu sorun için kısa ve akıllı bir çözüm bulunup bulunmadığını öğrenmek istiyorum. –

İlgili konular