示例#1
0
        /// <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));
        }
示例#2
0
        // ============================================================================
        //    Методы
        // ============================================================================

        /// <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);
        }
示例#3
0
        /// <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;
        }
示例#4
0
        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;
                    }
                }
            }
        }
示例#5
0
        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);
            }
        }