Example #1
0
        public virtual int Add(TreeListViewItem item)
        {
            if (TreeListView != null && TreeListView.InvokeRequired)
            {
                throw new Exception("Invoke required");
            }
            if (TreeListView != null && item.ListView != null)
            {
                throw new Exception("The Item is already in a TreeListView");
            }
            int insertCollectionIndex = GetInsertCollectionIndex(item);

            if (insertCollectionIndex == -1)
            {
                return(-1);
            }
            if (Parent != null)
            {
                item.SetParent(Parent);
            }
            item.Items.Comparer = Comparer;
            int insertTreeListViewIndex = GetInsertTreeListViewIndex(item, insertCollectionIndex);

            if (insertTreeListViewIndex > -1)
            {
                ListView treeListView = TreeListView;
                treeListView.Items.Insert(insertTreeListViewIndex, item);
                if (item.IsExpanded)
                {
                    item.Expand();
                }
                item.SetIndentation();
            }
            if (insertCollectionIndex > -1)
            {
                base.List.Insert(insertCollectionIndex, item);
            }
            if (insertCollectionIndex > -1)
            {
                OnItemAdded(new TreeListViewEventArgs(item, TreeListViewAction.Unknown));
            }
            if (base.Count == 1 && TreeListView != null && Parent != null && Parent.Visible)
            {
                Parent.Redraw();
            }
            return(insertCollectionIndex);
        }
Example #2
0
        internal void ExpandInternal()
        {
            if (IsInATreeListView && ListView.InvokeRequired)
            {
                throw new Exception("Invoke Required");
            }
            TreeListViewItem treeListViewItem = null;

            if (TreeListView != null)
            {
                treeListViewItem = TreeListView.FocusedItem;
            }
            CheckDirection checkDirection = CheckDirection.All;

            if (ListView != null)
            {
                checkDirection          = ListView.CheckDirection;
                ListView.CheckDirection = CheckDirection.None;
            }
            if (Visible && !_IsExpanded && ListView != null)
            {
                TreeListViewCancelEventArgs treeListViewCancelEventArgs = new TreeListViewCancelEventArgs(this, TreeListViewAction.Expand);
                ListView.RaiseBeforeExpand(treeListViewCancelEventArgs);
                if (treeListViewCancelEventArgs.Cancel)
                {
                    return;
                }
            }
            if (Visible)
            {
                for (int num = Items.Count - 1; num >= 0; num--)
                {
                    TreeListViewItem treeListViewItem2 = Items[num];
                    if (!treeListViewItem2.Visible)
                    {
                        ListView treeListView = TreeListView;
                        treeListView.Items.Insert(base.Index + 1, treeListViewItem2);
                        treeListViewItem2.SetIndentation();
                    }
                    if (treeListViewItem2.IsExpanded)
                    {
                        treeListViewItem2.Expand();
                    }
                }
            }
            if (Visible && !_IsExpanded && IsInATreeListView)
            {
                _IsExpanded = true;
                TreeListViewEventArgs e = new TreeListViewEventArgs(this, TreeListViewAction.Expand);
                ListView.RaiseAfterExpand(e);
                if (this.AfterExpand != null)
                {
                    this.AfterExpand(this);
                }
            }
            _IsExpanded = true;
            if (IsInATreeListView)
            {
                ListView.CheckDirection = checkDirection;
            }
            if (TreeListView != null && treeListViewItem != null && treeListViewItem.Visible)
            {
                treeListViewItem.Focused = true;
            }
        }