Пример #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);
        }
Пример #2
0
        internal void RemoveAtInternal(int index)
        {
            if (TreeListView != null && TreeListView.InvokeRequired)
            {
                throw new Exception("Invoke required");
            }
            TreeListViewItem treeListViewItem = this[index];

            if (this[index].Visible && TreeListView != null)
            {
                treeListViewItem.Hide();
            }
            base.List.RemoveAt(index);
            treeListViewItem.SetParent(null);
            if (base.Count == 0 && TreeListView != null && Parent != null)
            {
                Parent.Redraw();
            }
            if (base.Count > 0 && TreeListView != null && index == base.Count)
            {
                this[index - 1].Redraw();
            }
            OnItemRemoved(new TreeListViewEventArgs(treeListViewItem, TreeListViewAction.Unknown));
        }