/// <summary> /// Вызывает событие ItemAdding. /// </summary> protected virtual void OnItemAdding(CollectionChangeNotifyEventArgs args) { if(IsChangeEventsOff) return; if(args == null) throw new ArgumentNullException("args"); if(args.Sender == null) args.Sender = this; lock(SyncRoot) { if(itemAdding != null) itemAdding.Raise(this, args); OnObjectChanging(new ObjectChangeNotifyEventArgs(this, args.Action, args.SourceArgs ?? args)); } }
//------------------------------------------------------------------------------------- #region << SimTree Handlers >> void tree_ItemAdded(object sender, CollectionChangeNotifyEventArgs args) { try { ITreeItem item = (ITreeItem)args.Item; if(isUpdated) return; if(item.Parent == null) { SimTreeNode node = new SimTreeNode(item, NodeTextPropName); if(item.HasChildren) { if(needImageIndexEventTarget == NeedImageIndexEventTarget.AllNodes) node.ImageIndex = OnNeedImageIndex(node, closedImageIndex); else node.ImageIndex = node.SelectedImageIndex = closedImageIndex; } else node.SelectedImageIndex = node.ImageIndex = OnNeedImageIndex(node); treeView.Nodes.Add(node); } else //if(item.Parent.Props.ContainsParam("Node")) { SimTreeNode pNode = treeView.Nodes.Find(item.Parent); if(pNode != null) if(pNode.Nodes.Count == 1 && pNode.Nodes[0].Name == "-1") { pNode.Nodes.Clear(); foreach(ITreeItem key in item.Parent.Children) { SimTreeNode node = new SimTreeNode(key, NodeTextPropName); if(key.HasChildren) node.Nodes.Add("-1", "hidden"); if(treeView.ImageList != null) if(key.HasChildren) { if(needImageIndexEventTarget == NeedImageIndexEventTarget.AllNodes) node.ImageIndex = OnNeedImageIndex(node, closedImageIndex); else node.ImageIndex = node.SelectedImageIndex = closedImageIndex; } else node.SelectedImageIndex = node.ImageIndex = OnNeedImageIndex(node); pNode.Nodes.Add(node); } } else { SimTreeNode node = new SimTreeNode(item, NodeTextPropName); if(item.HasChildren) node.Nodes.Add("-1", "hidden"); if(treeView.ImageList != null) if(item.IsGroup) { if(needImageIndexEventTarget == NeedImageIndexEventTarget.AllNodes) node.ImageIndex = OnNeedImageIndex(node, closedImageIndex); else node.ImageIndex = node.SelectedImageIndex = closedImageIndex; } else node.SelectedImageIndex = node.ImageIndex = OnNeedImageIndex(node); pNode.Nodes.Add(node); } } } catch(Exception Err) { ErrorBox.Show(Err); } //throw new Exception("The method or operation is not implemented."); }
//------------------------------------------------------------------------------------- void tree_ItemChanged(object sender, CollectionChangeNotifyEventArgs args) { SimTreeNode node = treeView.Nodes.Find((ITreeItem)args.Item); if(isUpdated == false && node != null) node.Text = ((ITreeItem)args.Item).ItemText; }
//------------------------------------------------------------------------------------- void tree_ItemRemoving(object sender, CollectionChangeNotifyEventArgs args) { try { SimTreeNode node = treeView.Nodes.Find((ITreeItem)args.Item); if(isUpdated == false && node != null) node.Remove(); } catch(Exception Err) { ErrorBox.Show(Err); } }
void _tree_ItemChanged(object sender, CollectionChangeNotifyEventArgs args) { //tree_ItemChanged(ITree sender, ITreeItem item) ITreeItem item = (ITreeItem)args.Item; SimTreeNodeEx node = treeView.Nodes.Find(item); if(isUpdated == false && node != null) node.Text = item.ItemText; }
void _tree_ItemDeleted(object sender, CollectionChangeNotifyEventArgs args) { //tree_ItemRemoving(object sender, object item) try { ITreeItem item = (ITreeItem)args.Item; SimTreeNodeEx node = treeView.Nodes.Find(item); if(isUpdated == false && node != null) { node.Remove(); SelectNodeWithItem(treeView.SelectedNode.TreeItem); } } catch(Exception Err) { ErrorBox.Show(Err); } }
/// <summary> /// Вызывает событие ItemDeleted. /// </summary> protected virtual void OnItemDeleted(CollectionChangeNotifyEventArgs args) { if(IsChangeEventsOff) return; if(args == null) throw new ArgumentNullException("args"); if(args.Sender == null) args.Sender = this; if(IsChangeEventsOff == false) { if(itemDeleted != null) itemDeleted.Raise(this, args); OnObjectChanged(new ObjectChangeNotifyEventArgs(this, args.Action, args.SourceArgs ?? args)); } }
void Binder_ItemChanged(object sender, CollectionChangeNotifyEventArgs args) { if(IsBindOff) return; if(args.Action == ChangeNotifyAction.ObjectReset) { Refresh(); return; } int pos = _index.IndexOf(args.Item); if( pos > -1 && _filterMethod != null && _filterMethod(args.Item) == false) { this._index.RemoveAt(pos); OnListChanged(new ListChangedEventArgs(ListChangedType.ItemDeleted, pos)); return; } if(IsSorted && pos > -1) { int p = pos; _index.RemoveAt(pos); pos = FindSortPosition(args.Item); _index.Insert(pos, args.Item); OnListChanged(new ListChangedEventArgs(ListChangedType.ItemMoved, pos, p)); } else if(pos != -1) OnListChanged(new ListChangedEventArgs(ListChangedType.ItemChanged, pos)); }
void Binder_ItemAdded(object sender, CollectionChangeNotifyEventArgs args) { if(IsBindOff) return; int pos = -1; if(_filterMethod == null || _filterMethod(args.Item)) { if(_index.Contains(args.Item)) _index.Remove(args.Item); if(IsSorted == false) { _index.Add(args.Item ?? args); pos = _index.Count-1; } else { pos = FindSortPosition(args.Item); _index.Insert(pos, args.Item); } } if(pos == -1 && _index.Contains(args.Item)) Refresh(); if(pos == -1) return; else OnListChanged(new ListChangedEventArgs(ListChangedType.ItemAdded, pos)); }
//------------------------------------------------------------------------------------- void Binder_ItemChanged(object sender, CollectionChangeNotifyEventArgs args) { if(isBindOff) return; if(args.ItemIndex == -1) { OnListChanged(new ListChangedEventArgs(ListChangedType.Reset, 0)); return; } if(index == null) OnListChanged(new ListChangedEventArgs(ListChangedType.ItemChanged, args.ItemIndex)); else { int pos = index.IndexOf(args.ItemIndex); if(IsFiltered) { bool pass = PassFilterCheck(_list[args.ItemIndex]); if(pass == false && pos > -1) { this.index.RemoveAt(pos); OnListChanged(new ListChangedEventArgs(ListChangedType.ItemDeleted, pos)); return; } if(pass && pos == -1) { this.index.Add(args.ItemIndex); pos = index.IndexOf(args.ItemIndex); OnListChanged(new ListChangedEventArgs(ListChangedType.ItemAdded, pos)); } } if(IsSorted && pos > -1 ) { int p = pos; index.RemoveAt(pos); pos = FindSortPosition(args.ItemIndex); index.Insert(pos, args.ItemIndex); OnListChanged(new ListChangedEventArgs(ListChangedType.ItemMoved, pos, p)); } else OnListChanged(new ListChangedEventArgs(ListChangedType.ItemChanged, pos)); } }
//------------------------------------------------------------------------------------- void Binder_ItemDeleted(object sender, CollectionChangeNotifyEventArgs args) { if(IsBindOff) return; int pos = _index.IndexOf(args.Item); if(pos == -1) return; _index.RemoveAt(pos); OnListChanged(new ListChangedEventArgs(ListChangedType.ItemDeleted, pos)); }
//------------------------------------------------------------------------------------- void Binder_ItemDeleted(object sender, CollectionChangeNotifyEventArgs args) { if(isBindOff) return; if(args.ItemIndex == -1) { OnListChanged(new ListChangedEventArgs(ListChangedType.Reset, 0)); return; } if(index == null) OnListChanged(new ListChangedEventArgs(ListChangedType.ItemDeleted, args.ItemIndex)); else { int pos = index.IndexOf(args.ItemIndex); if(pos == -1) return; index.RemoveAt(pos); for(int i = 0; i < index.Count; i++) if(index[i] > args.ItemIndex) index[i]--; OnListChanged(new ListChangedEventArgs(ListChangedType.ItemDeleted, pos)); } }
//------------------------------------------------------------------------------------- void Binder_ItemAdded(object sender, CollectionChangeNotifyEventArgs args) { if(isBindOff) return; if(args.ItemIndex == -1) { OnListChanged(new ListChangedEventArgs(ListChangedType.Reset, 0)); return; } if(index == null) OnListChanged(new ListChangedEventArgs(ListChangedType.ItemAdded, args.ItemIndex)); else { int pos = -1; if(IsFiltered && PassFilterCheck(_list[args.ItemIndex]) == false) pos = -1; else { for(int a = 0; a < index.Count; a++) if(index[a] >= args.ItemIndex) index[a]++; if(IsSorted == false) { index.Add(args.ItemIndex); pos = index.Count-1; } else { pos = FindSortPosition(args.ItemIndex); index.Insert(pos, args.ItemIndex); } } if(pos == -1 && index.Contains(args.ItemIndex)) RefreshInternal(); if(pos != -1) OnListChanged(new ListChangedEventArgs(ListChangedType.ItemAdded, pos)); } }
void tree_ItemAdded(object sender, CollectionChangeNotifyEventArgs args) { // ????? if(IsIncrementalTree == false) view.Add((ITreeItem)args.Item); Invalidate(); }
void tree_ItemRemoved(object sender, CollectionChangeNotifyEventArgs args) { ITreeItem item = (ITreeItem)args.Item; if(view.Contains(item)) { HideChildren(item); view.Remove(item); } if(item.Parent != null && (item.Parent.HasChildren == false || (item.Parent.Children.Count() == 1 && item.Parent.Children.Contains(item)))) { if(view.Contains(item.Parent)) { view[item.Parent].hasButton = false; view[item.Parent].btnClose = true; view[item.Parent].btnRect = new Rectangle(); } } Invalidate(); }
//------------------------------------------------------------------------------------- #region << SimTree Handlers >> void tree_ItemChanged(object sender, CollectionChangeNotifyEventArgs args) { ITreeItem item = (ITreeItem)args.Item; if(view.Contains(item)) { if(!this.tree.AllowMultiObject) { view.OnListChanged(new ListChangedEventArgs(ListChangedType.ItemChanged, view.IndexOf(item))); Invalidate(); } else { if(item.Object != null) { int[] indexAllObject = this.tree.IndexOfAll(item.Object); for(int i = 0; i < indexAllObject.Length; i++) { view.OnListChanged(new ListChangedEventArgs(ListChangedType.ItemChanged, view.IndexOf((ITreeItem)tree.GetItemWithIndex(indexAllObject[i])))); Invalidate(); } } } } }