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); }
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)); }