Exemple #1
0
        /// <summary>
        /// Removes a child from this object.
        /// </summary>
        /// <param name="child">The child to be removed from this parent.</param>
        public void RemoveChild(object child)
        {
            ITreeNode node = CreateNodeWrapper(child);             // TODO: This might not remove correctly.

            if (!IsReadOnly)
            {
                if (m_children == null || (!m_children.Contains(node)))
                {
                    return;
                }
                OnAboutToLoseChild?.Invoke(this, node);
                ((TreeNodeHelper)node).AboutToBeRemoved(((TreeNodeHelper)node));
                m_children.Remove(node);
                if (m_autoIndex)
                {
                    ITreeNodeProxy       tnp = (ITreeNodeProxy)node;
                    SimCore.IHasIdentity ihi = (SimCore.IHasIdentity)tnp.Ward;
                    m_childFinder.Remove(ihi.Guid);
                }
                OnLostChild?.Invoke(this, node);
                ((TreeNodeHelper)node).WasRemoved(((TreeNodeHelper)node));
            }
            else
            {
                ReadOnlyAccessViolation("RemoveChild");
            }
        }
Exemple #2
0
 protected void _OnLostChild(TreeNodeHelper newChild)
 {
     OnLostChild?.Invoke(this, newChild);
 }