// 删儿子 item可以是ElementItem 或 TextItem internal void RemoveChildInternal(Item item, bool bAddObjTimestamp) { Debug.Assert(item != null,"RemoveChild() item不能为null,调用出错"); // 当前节点 不属于儿子集合 int nIndex = this.children.IndexOf(item); if (nIndex == -1) { Debug.Assert(false,"RemoveChild() item不属于儿子集合,调用出错"); return; } //////////////////////////////////////////////// // BeforeItemDelete /////////////////////////////////////////////// string strXPath = item.GetXPath(); // 先得到Xpath,否则删除后就没有了 BeforeItemDeleteEventArgs beforeArgs = new BeforeItemDeleteEventArgs(); beforeArgs.item = item; this.m_document.fireBeforeItemDelete(this.m_document,beforeArgs); // 把一些有用的初值设好,例如NamespaceURi,Value if (item is ElementItem) { // 注意递归下级 this.SetNamespaceURI((ElementAttrBase)item); // 递归下级设value??????????? } else { // 把临时参数设好,目的是在一个元素被删除后,还可以继续使用它的Value属性 item.m_paraValue1 = item.GetValue(); } if (ItemUtil.IsBelong(item,this.m_document.m_selectedItem)) { this.m_document.SetActiveItem(null); this.m_document.SetCurText(null,null); } // 做Remove()操作 this.children.Remove(item); //////////////////////////////////////////////// // ItemDeleted /////////////////////////////////////////////// if (item is ElementItem) { ElementItem element = (ElementItem)item; element.FireTreeRemoveEvents(strXPath); } else { ItemDeletedEventArgs args = new ItemDeletedEventArgs(); args.item = item; args.XPath = strXPath; // 每次按off算,外面需要时设为on args.RiseAttrsEvents = false; args.RecursiveChildEvents = false; this.m_document.fireItemDeleted(this.m_document,args); } if (bAddObjTimestamp == true) this.m_objChildrenTimestmap ++; }
// 删属性 internal void RemoveAttrInternal(AttrItem attr, bool bAddObjTimestamp) { Debug.Assert(attr != null,"RemoveAttr() attr不能为null,调用出错"); // 当前节点 不属于儿子集合 int nIndex = this.attrs.IndexOf(attr); if (nIndex == -1) { Debug.Assert(false,"RemoveChild() attr不属于属性集合,调入出错"); return; } //////////////////////////////////////////////// // BeforeItemDelete /////////////////////////////////////////////// string strXPath = attr.GetXPath(); // 先得到Xpath,否则删除后就没有了 BeforeItemDeleteEventArgs beforeArgs = new BeforeItemDeleteEventArgs(); beforeArgs.item = attr; this.m_document.fireBeforeItemDelete(this.m_document,beforeArgs); // 把一些有用的初值设好,例如NamespaceURi this.SetNamespaceURI((ElementAttrBase)attr); attr.m_paraValue1 = attr.GetValue(); // 进行Remove操作 this.attrs.Remove(attr); //////////////////////////////////////////////// // ItemDeleted /////////////////////////////////////////////// ItemDeletedEventArgs args = new ItemDeletedEventArgs(); args.item = attr; args.XPath = strXPath; // 每次按off算,外面需要时设为on args.RiseAttrsEvents = false; args.RecursiveChildEvents = false; this.m_document.fireItemDeleted(this.m_document,args); if (bAddObjTimestamp == true) this.m_objAttrsTimestamp ++; }
public void fireBeforeItemDelete(object sender, BeforeItemDeleteEventArgs args) { if (BeforeItemDelete != null) { BeforeItemDelete(sender,args); } }