Ejemplo n.º 1
0
        // 得到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);              //返回父亲
        }
Ejemplo n.º 2
0
		// 得到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;   //返回父亲
		}