Ejemplo n.º 1
0
        // END - NEW ADD OVERLOADS IN WHIDBEY -->

        /// <include file='doc\TreeNodeCollection.uex' path='docs/doc[@for="TreeNodeCollection.AddRange"]/*' />
        public virtual void AddRange(TreeNode[] nodes)
        {
            if (nodes == null)
            {
                throw new ArgumentNullException(nameof(nodes));
            }
            if (nodes.Length == 0)
            {
                return;
            }
            TreeView tv = owner.TreeView;

            if (tv != null && nodes.Length > TreeNode.MAX_TREENODES_OPS)
            {
                tv.BeginUpdate();
            }
            owner.Nodes.FixedIndex = owner.childCount;
            owner.EnsureCapacity(nodes.Length);
            for (int i = nodes.Length - 1; i >= 0; i--)
            {
                AddInternal(nodes[i], i);
            }
            owner.Nodes.FixedIndex = -1;
            if (tv != null && nodes.Length > TreeNode.MAX_TREENODES_OPS)
            {
                tv.EndUpdate();
            }
        }
Ejemplo n.º 2
0
        /// <include file='doc\TreeNodeCollection.uex' path='docs/doc[@for="TreeNodeCollection.Add1"]/*' />
        /// <devdoc>
        ///     Adds a new child node to this node.  Child node is positioned after siblings.
        /// </devdoc>
        public virtual int Add(TreeNode node)
        {
            if (node == null)
            {
                throw new ArgumentNullException("node");
            }
            if (node.handle != IntPtr.Zero)
            {
                throw new ArgumentException(SR.GetString(SR.OnlyOneControl, node.Text), "node");
            }

            // If the TreeView is sorted, index is ignored
            TreeView tv = owner.TreeView;

            if (tv != null && tv.Sorted)
            {
                return(owner.AddSorted(node));
            }

            owner.EnsureCapacity();
            node.parent = owner;
            node.index  = owner.childCount++;
            owner.children[node.index] = node;
            node.Realize();

            if (tv != null && node == tv.selectedNode)
            {
                tv.SelectedNode = node; // communicate this to the handle
            }
            return(node.index);
        }