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
Post a Comment