internal override UnsafeNativeMethods.IRawElementProviderFragment FragmentNavigate(UnsafeNativeMethods.NavigateDirection direction)
            {
                DataGridView dataGridView = Owner.DataGridView;

                switch (direction)
                {
                case UnsafeNativeMethods.NavigateDirection.Parent:
                    return(dataGridView.AccessibilityObject.GetChild(0));

                case UnsafeNativeMethods.NavigateDirection.PreviousSibling:
                    return(null);

                case UnsafeNativeMethods.NavigateDirection.NextSibling:
                    if (dataGridView.Columns.GetColumnCount(DataGridViewElementStates.Visible) == 0)
                    {
                        return(null);
                    }

                    return(NavigateForward());

                default:
                    return(null);
                }
            }
            internal override UnsafeNativeMethods.IRawElementProviderFragment FragmentNavigate(UnsafeNativeMethods.NavigateDirection direction)
            {
                if (direction == UnsafeNativeMethods.NavigateDirection.FirstChild ||
                    direction == UnsafeNativeMethods.NavigateDirection.LastChild)
                {
                    return(this.ownerItem.ProgressBar.AccessibilityObject);
                }

                // Handle Parent and other directions in base ToolStripItem.FragmentNavigate() method.
                return(base.FragmentNavigate(direction));
            }
            internal override UnsafeNativeMethods.IRawElementProviderFragment FragmentNavigate(UnsafeNativeMethods.NavigateDirection direction)
            {
                switch (direction)
                {
                case UnsafeNativeMethods.NavigateDirection.Parent:
                case UnsafeNativeMethods.NavigateDirection.PreviousSibling:
                case UnsafeNativeMethods.NavigateDirection.NextSibling:
                    var toolStripProgressBarControl = Owner as ToolStripProgressBarControl;
                    if (toolStripProgressBarControl != null)
                    {
                        return(toolStripProgressBarControl.Owner.AccessibilityObject.FragmentNavigate(direction));
                    }
                    break;
                }

                return(base.FragmentNavigate(direction));
            }
        /// <summary>
        /// Request to return the element in the specified direction.
        /// </summary>
        /// <param name="direction">Indicates the direction in which to navigate.</param>
        /// <returns>Returns the element in the specified direction.</returns>
        internal override UnsafeNativeMethods.IRawElementProviderFragment FragmentNavigate(UnsafeNativeMethods.NavigateDirection direction)
        {
            if (direction == UnsafeNativeMethods.NavigateDirection.Parent &&
                _owningPropertyGrid.SelectedGridEntry != null &&
                _owningDropDownButton.Visible)
            {
                return(_owningPropertyGrid.SelectedGridEntry?.AccessibilityObject);
            }
            else if (direction == UnsafeNativeMethods.NavigateDirection.PreviousSibling)
            {
                return(_owningPropertyGrid.EditAccessibleObject);
            }

            return(base.FragmentNavigate(direction));
        }
示例#5
0
            /// <summary>
            /// Returns the element in the specified direction.
            /// </summary>
            /// <param name="direction">Indicates the direction in which to navigate.</param>
            /// <returns>Returns the element in the specified direction.</returns>
            internal override UnsafeNativeMethods.IRawElementProviderFragment FragmentNavigate(UnsafeNativeMethods.NavigateDirection direction)
            {
                PropertyGridView.PropertyGridViewAccessibleObject parent = (PropertyGridView.PropertyGridViewAccessibleObject)Parent;

                switch (direction)
                {
                case UnsafeNativeMethods.NavigateDirection.Parent:
                    return(Parent);

                case UnsafeNativeMethods.NavigateDirection.NextSibling:
                    return(parent.GetNextCategory(_owningCategoryGridEntry));

                case UnsafeNativeMethods.NavigateDirection.PreviousSibling:
                    return(parent.GetPreviousCategory(_owningCategoryGridEntry));

                case UnsafeNativeMethods.NavigateDirection.FirstChild:
                    return(parent.GetFirstChildProperty(_owningCategoryGridEntry));

                case UnsafeNativeMethods.NavigateDirection.LastChild:
                    return(parent.GetLastChildProperty(_owningCategoryGridEntry));
                }

                return(base.FragmentNavigate(direction));
            }
 object UnsafeNativeMethods.IRawElementProviderFragment.Navigate(UnsafeNativeMethods.NavigateDirection direction)
 {
     IntSecurity.UnmanagedCode.Assert();
     return(AsNativeAccessible(publicIRawElementProviderFragment.Navigate(direction)));
 }
        internal override UnsafeNativeMethods.IRawElementProviderFragment FragmentNavigate(UnsafeNativeMethods.NavigateDirection direction)
        {
            switch (direction)
            {
            case UnsafeNativeMethods.NavigateDirection.Parent:
                var owner = Owner as IDataGridViewEditingControl;
                if (owner != null && owner.EditingControlDataGridView.EditingControl == owner)
                {
                    return(_parentAccessibleObject);
                }

                return(null);
            }

            return(base.FragmentNavigate(direction));
        }
示例#8
0
            internal override UnsafeNativeMethods.IRawElementProviderFragment FragmentNavigate(UnsafeNativeMethods.NavigateDirection direction)
            {
                switch (direction)
                {
                case UnsafeNativeMethods.NavigateDirection.Parent:
                    return(Parent);

                case UnsafeNativeMethods.NavigateDirection.NextSibling:
                    if (Parent.GetChildCount() > 1)
                    {
                        return(Parent.GetChild(1));
                    }
                    break;

                case UnsafeNativeMethods.NavigateDirection.FirstChild:
                    if (GetChildCount() > 0)
                    {
                        return(GetChild(0));
                    }
                    break;

                case UnsafeNativeMethods.NavigateDirection.LastChild:
                    if (GetChildCount() > 0)
                    {
                        return(GetChild(GetChildCount() - 1));
                    }
                    break;
                }

                return(null);
            }
示例#9
0
 internal override UnsafeNativeMethods.IRawElementProviderFragment FragmentNavigate(UnsafeNativeMethods.NavigateDirection direction)
 {
     return(_accessibleObject.FragmentNavigate(direction));
 }
            /// <summary>
            ///  Returns the element in the specified direction.
            /// </summary>
            /// <param name="direction">Indicates the direction in which to navigate.</param>
            /// <returns>Returns the element in the specified direction.</returns>
            internal override UnsafeNativeMethods.IRawElementProviderFragment FragmentNavigate(UnsafeNativeMethods.NavigateDirection direction)
            {
                switch (direction)
                {
                case UnsafeNativeMethods.NavigateDirection.NextSibling:
                    var  propertyGridViewAccessibleObject = (PropertyGridView.PropertyGridViewAccessibleObject)Parent;
                    var  propertyGridView      = propertyGridViewAccessibleObject.Owner as PropertyGridView;
                    bool currentGridEntryFound = false;
                    return(propertyGridViewAccessibleObject.GetNextGridEntry(_owningPropertyDescriptorGridEntry, propertyGridView.TopLevelGridEntries, out currentGridEntryFound));

                case UnsafeNativeMethods.NavigateDirection.PreviousSibling:
                    propertyGridViewAccessibleObject = (PropertyGridView.PropertyGridViewAccessibleObject)Parent;
                    propertyGridView      = propertyGridViewAccessibleObject.Owner as PropertyGridView;
                    currentGridEntryFound = false;
                    return(propertyGridViewAccessibleObject.GetPreviousGridEntry(_owningPropertyDescriptorGridEntry, propertyGridView.TopLevelGridEntries, out currentGridEntryFound));

                case UnsafeNativeMethods.NavigateDirection.FirstChild:
                    return(GetFirstChild());

                case UnsafeNativeMethods.NavigateDirection.LastChild:
                    return(GetLastChild());
                }

                return(base.FragmentNavigate(direction));
            }
示例#11
0
            internal override UnsafeNativeMethods.IRawElementProviderFragment FragmentNavigate(UnsafeNativeMethods.NavigateDirection direction)
            {
                int firstItemIndex = 0;
                int lastItemIndex  = _owningListBox.Items.Count - 1;
                int currentIndex   = CurrentIndex;

                switch (direction)
                {
                case UnsafeNativeMethods.NavigateDirection.Parent:
                    return(_owningListBox.AccessibilityObject);

                case UnsafeNativeMethods.NavigateDirection.PreviousSibling:
                    if (currentIndex > firstItemIndex && currentIndex <= lastItemIndex)
                    {
                        return(_owningAccessibleObject.GetChild(currentIndex - 1));
                    }
                    return(null);

                case UnsafeNativeMethods.NavigateDirection.NextSibling:
                    if (currentIndex >= firstItemIndex && currentIndex < lastItemIndex)
                    {
                        return(_owningAccessibleObject.GetChild(currentIndex + 1));
                    }
                    return(null);
                }

                return(base.FragmentNavigate(direction));
            }
示例#12
0
        /// <summary>
        /// Request to return the element in the specified direction.
        /// </summary>
        /// <param name="direction">Indicates the direction in which to navigate.</param>
        /// <returns>Returns the element in the specified direction.</returns>
        internal override UnsafeNativeMethods.IRawElementProviderFragment FragmentNavigate(UnsafeNativeMethods.NavigateDirection direction)
        {
            if (_parentPropertyGrid.AccessibilityObject is PropertyGridAccessibleObject propertyGridAccessibleObject)
            {
                UnsafeNativeMethods.IRawElementProviderFragment navigationTarget = propertyGridAccessibleObject.ChildFragmentNavigate(this, direction);
                if (navigationTarget != null)
                {
                    return(navigationTarget);
                }
            }

            return(base.FragmentNavigate(direction));
        }
示例#13
0
        internal override UnsafeNativeMethods.IRawElementProviderFragment FragmentNavigate(UnsafeNativeMethods.NavigateDirection direction)
        {
            if (owner == null || owner.DropDown == null)
            {
                return(null);
            }

            switch (direction)
            {
            case UnsafeNativeMethods.NavigateDirection.FirstChild:
                int childCount = GetChildCount();
                if (childCount > 0)
                {
                    return(GetChildFragment(0));
                }

                return(null);

            case UnsafeNativeMethods.NavigateDirection.LastChild:
                childCount = GetChildCount();
                if (childCount > 0)
                {
                    return(GetChildFragment(childCount - 1));
                }

                return(null);

            case UnsafeNativeMethods.NavigateDirection.NextSibling:
            case UnsafeNativeMethods.NavigateDirection.PreviousSibling:
                ToolStripDropDown dropDown = owner.Owner as ToolStripDropDown;

                if (dropDown == null)
                {
                    break;
                }
                int index = dropDown.Items.IndexOf(owner);

                if (index == -1)
                {
                    Debug.Fail("No item matched the index?");
                    return(null);
                }

                index += direction == UnsafeNativeMethods.NavigateDirection.NextSibling ? 1 : -1;

                if (index >= 0 && index < dropDown.Items.Count)
                {
                    var item            = dropDown.Items[index];
                    var controlHostItem = item as ToolStripControlHost;
                    if (controlHostItem != null)
                    {
                        return(controlHostItem.ControlAccessibilityObject);
                    }

                    return(item.AccessibilityObject);
                }

                return(null);
            }

            return(base.FragmentNavigate(direction));
        }
        internal override UnsafeNativeMethods.IRawElementProviderFragment FragmentNavigate(UnsafeNativeMethods.NavigateDirection direction)
        {
            if (owner == null || owner.DropDown == null)
            {
                return(null);
            }

            switch (direction)
            {
            case UnsafeNativeMethods.NavigateDirection.FirstChild:
                return(owner.DropDown.Items.Count > 0 ? owner.DropDown.Items[0].AccessibilityObject : null);

            case UnsafeNativeMethods.NavigateDirection.LastChild:
                return(owner.DropDown.Items.Count > 0 ? owner.DropDown.Items[owner.DropDown.Items.Count - 1].AccessibilityObject : null);

            case UnsafeNativeMethods.NavigateDirection.NextSibling:
            case UnsafeNativeMethods.NavigateDirection.PreviousSibling:
                ToolStripDropDown dropDown = owner.Owner as ToolStripDropDown;

                if (dropDown == null)
                {
                    break;
                }
                int index = dropDown.Items.IndexOf(owner);

                if (index == -1)
                {
                    Debug.Fail("No item matched the index?");
                    return(null);
                }

                index += direction == UnsafeNativeMethods.NavigateDirection.NextSibling ? 1 : -1;

                return(index >= 0 && index < dropDown.Items.Count ? dropDown.Items[index].AccessibilityObject : null);
            }

            return(base.FragmentNavigate(direction));
        }
示例#15
0
            internal override UnsafeNativeMethods.IRawElementProviderFragment FragmentNavigate(UnsafeNativeMethods.NavigateDirection direction)
            {
                switch (direction)
                {
                case UnsafeNativeMethods.NavigateDirection.FirstChild:
                    int childCount = GetChildCount();
                    if (childCount > 0)
                    {
                        return(GetChild(0));
                    }
                    break;

                case UnsafeNativeMethods.NavigateDirection.LastChild:
                    childCount = GetChildCount();
                    if (childCount > 0)
                    {
                        int lastChildIndex = childCount - 1;
                        return(GetChild(lastChildIndex));
                    }
                    break;
                }

                return(null);
            }
示例#16
0
            internal override UnsafeNativeMethods.IRawElementProviderFragment FragmentNavigate(UnsafeNativeMethods.NavigateDirection direction)
            {
                switch (direction)
                {
                case UnsafeNativeMethods.NavigateDirection.FirstChild:
                    return(DropDownItemsCount > 0 ? ownerItem.DropDown.Items[0].AccessibilityObject : null);

                case UnsafeNativeMethods.NavigateDirection.LastChild:
                    return(DropDownItemsCount > 0 ? ownerItem.DropDown.Items[ownerItem.DropDown.Items.Count - 1].AccessibilityObject : null);
                }
                return(base.FragmentNavigate(direction));
            }
示例#17
0
            internal override UnsafeNativeMethods.IRawElementProviderFragment FragmentNavigate(UnsafeNativeMethods.NavigateDirection direction)
            {
                switch (direction)
                {
                case UnsafeNativeMethods.NavigateDirection.Parent:
                    var currentCell = dataGridView.CurrentCell;
                    if (currentCell != null && dataGridView.IsCurrentCellInEditMode)
                    {
                        return(currentCell.AccessibilityObject);
                    }
                    break;

                case UnsafeNativeMethods.NavigateDirection.FirstChild:
                case UnsafeNativeMethods.NavigateDirection.LastChild:
                    return(dataGridView.EditingControlAccessibleObject);
                }

                return(null);
            }
示例#18
0
            internal override UnsafeNativeMethods.IRawElementProviderFragment FragmentNavigate(UnsafeNativeMethods.NavigateDirection direction)
            {
                StatusStrip statusStrip = Owner as StatusStrip;

                if (statusStrip == null || statusStrip.Items.Count == 0)
                {
                    return(null);
                }

                switch (direction)
                {
                case UnsafeNativeMethods.NavigateDirection.FirstChild:
                    AccessibleObject firstChild = null;
                    for (int i = 0; i < GetChildCount(); i++)
                    {
                        firstChild = GetChild(i);
                        if (firstChild != null && !(firstChild is ControlAccessibleObject))
                        {
                            return(firstChild);
                        }
                    }
                    return(null);

                case UnsafeNativeMethods.NavigateDirection.LastChild:
                    AccessibleObject lastChild = null;
                    for (int i = GetChildCount() - 1; i >= 0; i--)
                    {
                        lastChild = GetChild(i);
                        if (lastChild != null && !(lastChild is ControlAccessibleObject))
                        {
                            return(lastChild);
                        }
                    }
                    return(null);
                }

                return(base.FragmentNavigate(direction));
            }