/// <summary> /// Удаление дочернего узла /// </summary> /// <param name="node"></param> /// <returns></returns> public bool RemoveChild(DPTreeNode <T> childNode) { foreach (var curChildNode in childNode.FlattenNodes()) { RemoveFromAllNodes(curChildNode); } return(_children.Remove(childNode)); }
// ============================================================================ // Методы // ============================================================================ /// <summary> /// Создание дочернего узла (с указанными данными) /// </summary> /// <param name="value"></param> /// <returns></returns> public DPTreeNode <T> AddChild(T value) { var childNode = new DPTreeNode <T>(value, false) { Parent = this }; _children.Add(childNode); AddToAllNodes(childNode); return(childNode); }
/// <summary> /// Вставка дочернего узла в данный узел /// </summary> /// <param name="child"></param> public void AddChildNode(DPTreeNode <T> childNode) { foreach (var curChildNode in childNode.FlattenNodes()) { AddToAllNodes(curChildNode); } childNode.AllNodes = null; _children.Add(childNode); childNode.Parent = this; }
private void RemoveFromAllNodes(DPTreeNode <T> node) { object uniqueID; if (node.Value is IDPContractWithID) { AllNodes.Remove((node.Value as IDPContractWithID).ID); } else { for (int i = 0; i < AllNodes.Count; i++) { if (AllNodes[i] as object == node as object) { AllNodes.Remove(i); break; } } } }
private void AddToAllNodes(DPTreeNode <T> node) { if (AllNodes == null) { Parent.AddToAllNodes(node); } else { object uniqueID; if (node.Value is IDPContractWithID) { uniqueID = (node.Value as IDPContractWithID).ID; } else { uniqueID = AllNodes.Values.Count + 1; } AllNodes.Add(uniqueID, node); } }