我有在设计时创建的ultraTree(基础设施树),它有自定义类作为“标签”。我有 List 作为成员变量。我有两个组合框。根据组合选择,我将检查列表的每个项目“标签”。如果列表包含,我就选择它,否则我创建一个新的 UltraTree 并将其添加到列表中,然后分配给在设计时创建的树。
我的问题是,我添加到集合中的内容得到了引用,并且集合中的所有项目都被最后一项覆盖。UltraTree 没有任何克隆方法。
我没有找到使用此控件进行克隆的任何方法。
我的解决方案是什么:(
我的示例代码是
// My custom class
SelectedDeviceState treeState = new SelectedDeviceState(
firstDevice, secondDevice);
UltraTree tree = new UltraTree();
// This will clone the root node
// (it will be executed only once -> Root)
foreach (UltraTreeNode nod in tvwNavigation.Nodes)
{
UltraTreeNode tnode = nod.Clone() as UltraTreeNode;
tree.Nodes.Add(tnode);
}
//Adding the custom class as TAG
tree.Tag = treeState;
// Assigned and added
tvwNavigation = tree;
_treeCollection.Add(tree);