// 得到startItem的一个附近的节点 // MoveMember.Auto 先下,再上,再父亲 // MoveMember.Front 前方 // MoveMember.Behind 方 public static Item GetNearItem(Item startItem, MoveMember moveMember) { Item item = startItem; if (item == null) { return(null); } if (item.parent == null) { return(null); } int nRet = -1; ItemList aItem = null; // 如果item的parent对象是ElementItem,先试图找其儿子 if (item.parent != null) { aItem = item.parent.children; if (aItem != null) { nRet = aItem.IndexOf(item); } if (nRet == -1) { Debug.Assert(item.parent != null, "上面已经判断过了"); aItem = ((ElementItem)item.parent).attrs; if (aItem != null) { nRet = aItem.IndexOf(item); } } } if (nRet == -1) { return(null); } Debug.Assert(aItem != null, "上面已经判断过了nRet"); if (moveMember == MoveMember.Auto) { if (aItem.Count > nRet + 1) //返回下一个 { return(aItem[nRet + 1]); } else if (nRet > 0) { return(aItem[nRet - 1]); // 返回上一个 } } if (moveMember == MoveMember.Front) { if (nRet > 0) { return(aItem[nRet - 1]); } } if (moveMember == MoveMember.Behind) { if (aItem.Count > nRet + 1) { return(aItem[nRet + 1]); } } return(item.parent); //返回父亲 }
// 得到startItem的一个附近的节点 // MoveMember.Auto 先下,再上,再父亲 // MoveMember.Front 前方 // MoveMember.Behind 方 public static Item GetNearItem(Item startItem, MoveMember moveMember) { Item item = startItem; if (item == null) return null; if (item.parent == null) return null; int nRet = -1; ItemList aItem = null; // 如果item的parent对象是ElementItem,先试图找其儿子 if (item.parent != null) { aItem = item.parent.children; if (aItem != null) nRet = aItem.IndexOf(item); if (nRet == -1) { Debug.Assert(item.parent != null, "上面已经判断过了"); aItem = ((ElementItem)item.parent).attrs ; if (aItem != null) nRet = aItem.IndexOf(item); } } if (nRet == -1) return null; Debug.Assert(aItem != null, "上面已经判断过了nRet"); if (moveMember == MoveMember.Auto) { if (aItem.Count > nRet + 1) //返回下一个 return aItem[nRet+1]; else if (nRet > 0) return aItem[nRet -1]; // 返回上一个 } if (moveMember == MoveMember.Front) { if (nRet > 0) return aItem[nRet - 1]; } if (moveMember== MoveMember.Behind ) { if (aItem.Count > nRet + 1) return aItem[nRet + 1]; } return item.parent; //返回父亲 }