public static void TabSelect(IntPtr controlHandle, int index)
        {
            try
            {
                AutomationElement           control = CommonUIAPatternHelpers.Prologue(SelectionPattern.Pattern, controlHandle);
                AutomationElementCollection aec     = SelectionItemPatternHelper.GetListItems(control);

                /* When using the GetListItems() methods, item index 0 is the tab control itself, so add on to get to correct TabItem */
                if (index >= int.MaxValue)
                {
                    throw new ProdOperationException("input must be less than Int32.MaxValue");
                }

                int    adjustedIndex = index + 1;
                string itemText      = aec[adjustedIndex].Current.Name;

                StaticEvents.RegisterEvent(SelectionItemPattern.ElementSelectedEvent, control);
                SelectionItemPatternHelper.SelectItem(SelectionItemPatternHelper.FindItemByText(control, itemText));

                LogController.ReceiveLogMessage(new LogMessage(control.Current.Name));
            }
            catch (InvalidOperationException)
            {
                /* Call native function */
                ProdTabNative.SetSelectedTab(controlHandle, index);
            }
            catch (ElementNotAvailableException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ArgumentException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
        }
        public static void SetSelectedItem(IntPtr controlHandle, string itemText)
        {
            try
            {
                AutomationElement control = CommonUIAPatternHelpers.Prologue(SelectionPattern.Pattern, controlHandle);
                StaticEvents.RegisterEvent(SelectionItemPattern.ElementSelectedEvent, control);

                AutomationElement indexedItem = SelectionItemPatternHelper.FindItemByText(control, itemText);
                SelectionItemPatternHelper.SelectItem(indexedItem);

                LogController.ReceiveLogMessage(new LogMessage(itemText));
            }
            catch (InvalidOperationException)
            {
                ProdListBoxNative.SelectItemNative(controlHandle, itemText);
            }
            catch (ElementNotAvailableException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
            catch (ArgumentException err)
            {
                throw new ProdOperationException(err.Message, err);
            }
        }
        private static void UiaSetSelectedItem(BaseProdControl control, string itemText)
        {
            LogController.ReceiveLogMessage(new LogMessage("Selecting " + itemText));

            AutomationEventVerifier.Register(new EventRegistrationMessage(control, SelectionItemPattern.ElementSelectedEvent));
            AutomationElement element = SelectionItemPatternHelper.FindItemByText(control.UIAElement, itemText);

            SelectionItemPatternHelper.SelectItem(element);
        }
        private static void UiaSetSelectedIndex(BaseProdControl control, int index)
        {
            LogController.ReceiveLogMessage(new LogMessage("Selecting " + index));

            AutomationEventVerifier.Register(new EventRegistrationMessage(control, SelectionItemPattern.ElementSelectedEvent));
            AutomationElement indexedItem = SelectionItemPatternHelper.FindItemByIndex(control.UIAElement, index);

            SelectionItemPatternHelper.SelectItem(indexedItem);
        }