У меня есть ultraTree (дерево инфраструктуры), которое создается во время разработки и имеет собственный класс как «Tag». У меня есть список в качестве переменной члена. У меня есть два поля со списком. Основываясь на выборе комбо, я буду проверять каждый пункт списка «Тег». Если список содержит, просто я выбираю его, в противном случае я создаю новое 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);