c# - Copy TreeView node with object tag -


i have treeview. treenodes have treenode.tag property of type infofornode . contains field public datagridviewrow[] properties store information node.

now want copy node (with properties node.tag) , paste in same treeview. tried use treenode.clone() method:

foreach (var node in treequery.selectednodes)             {                 _copiednodes.add((treenode)node.clone());             } 

it works, copied , original nodes point @ same instance of datagridviewrow[] properties (because reference type , clone() performes shallow copy of node).

please explain, how can proper copy in case?

the easiest way manually.

        foreach (var node in treequery.selectednodes)         {             treenode newnode = (treenode)node.clone();             datagridview[] oldproperties = (datagridview[])node.tag;             datagridview[] newproperties = new datagridview[oldproperties.length];             for(int = 0; < oldproperties.length; i++)             {                 newproperties[i] = oldproperties[i].clone(); //or whatever copy method works             }             _copiednodes.add(newnode);         } 

this gives complete control on how copy tag data.


Comments