System.Windows.Automation.TreeWalker.TreeIterator.GetNextSibling C# (CSharp) Method

GetNextSibling() public method

public GetNextSibling ( AutomationElement element ) : AutomationElement
element AutomationElement
return AutomationElement
			public AutomationElement GetNextSibling (AutomationElement element)
			{
				if (element == null)
					throw new ArgumentNullException ("element");
				if (element == AutomationElement.RootElement)
					return null;
				AddMarkedElement (element);

				AutomationElement sibling = GetNextDirectSibling (element);

				AutomationElement previousParent = null;
				if (sibling == null && condition != Automation.RawViewCondition) {
					previousParent = TreeWalker.RawViewWalker.GetParent (element);
					markedElements.Add (previousParent);
					sibling = TreeWalker.RawViewWalker.GetParent (previousParent);
				}

				if (sibling == null)
					return null;

				AutomationElement nextSibling = null;
				if (!markedElements.Contains (sibling) && condition.AppliesTo (sibling))
					nextSibling = sibling;
				else {
					while (sibling != null && nextSibling == null && sibling != AutomationElement.RootElement) {
						nextSibling = GetFirstChild (sibling, previousParent);
						previousParent = sibling;
						sibling = TreeWalker.RawViewWalker.GetParent (sibling);
					}
				}

				return nextSibling;
			}