/// <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 UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction) { int childCount = _owningListBox.Items.Count; if (childCount == 0) { return(base.FragmentNavigate(direction)); } return(direction switch { UiaCore.NavigateDirection.FirstChild => GetChild(0), UiaCore.NavigateDirection.LastChild => GetChild(childCount - 1), _ => 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 UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction) { if (!_owningDropDownButton.Visible || _owningPropertyGrid?.SelectedGridEntry?.AccessibilityObject is not PropertyDescriptorGridEntryAccessibleObject parent) { return(null); } return(direction switch { UiaCore.NavigateDirection.Parent => parent, UiaCore.NavigateDirection.NextSibling => parent.GetNextChild(this), UiaCore.NavigateDirection.PreviousSibling => parent.GetPreviousChild(this), _ => base.FragmentNavigate(direction), });
internal override UiaCore.IRawElementProviderFragment FragmentNavigate(UiaCore.NavigateDirection direction) { if (direction == UiaCore.NavigateDirection.Parent && _owningPropertyGrid.SelectedGridEntry != null && _owningDropDownButton.Visible) { return(_owningPropertyGrid.SelectedGridEntry?.AccessibilityObject); } else if (direction == UiaCore.NavigateDirection.PreviousSibling) { return(_owningPropertyGrid.EditAccessibleObject); } return(base.FragmentNavigate(direction)); }
internal override UiaCore.IRawElementProviderFragment FragmentNavigate(UiaCore.NavigateDirection direction) { switch (direction) { case UiaCore.NavigateDirection.FirstChild: return(GetCalendarChildAccessibleObject(_calendarIndex, CalendarChildType.PreviousButton)); case UiaCore.NavigateDirection.LastChild: return(_owner.ShowTodayCircle ? GetCalendarChildAccessibleObject(_calendarIndex, CalendarChildType.TodayLink) : GetCalendarChildAccessibleObject(_calendarIndex, CalendarChildType.CalendarBody)); } return(base.FragmentNavigate(direction)); }
internal override UiaCore.IRawElementProviderFragment FragmentNavigate(UiaCore.NavigateDirection direction) { switch (direction) { case UiaCore.NavigateDirection.Parent: if (Owner is IDataGridViewEditingControl owner && owner.EditingControlDataGridView.EditingControl == owner) { return(_parentAccessibleObject); } return(null); } return(base.FragmentNavigate(direction)); }
internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction) { if (_toolStripHostedControl is not null && _toolStripControlHost is not null) { switch (direction) { case UiaCore.NavigateDirection.Parent: case UiaCore.NavigateDirection.PreviousSibling: case UiaCore.NavigateDirection.NextSibling: return(_toolStripControlHost.AccessibilityObject.FragmentNavigate(direction)); } } return(base.FragmentNavigate(direction)); }
internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction) { switch (direction) { case UiaCore.NavigateDirection.FirstChild: case UiaCore.NavigateDirection.LastChild: // Don't show the inner menu while it is invisible. // Otherwise it will affect accessibility tree, // especially for items-controls that have not been created yet. return(_owningToolStripOverflowButton.DropDown.Visible ? _owningToolStripOverflowButton.DropDown.AccessibilityObject : null); } return(base.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 UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction) { if (Parent is not PropertyGridView.PropertyGridViewAccessibleObject parent) { return(null); } return(direction switch { UiaCore.NavigateDirection.Parent => Parent, UiaCore.NavigateDirection.NextSibling => parent.GetNextCategory(_owningCategoryGridEntry), UiaCore.NavigateDirection.PreviousSibling => parent.GetPreviousCategory(_owningCategoryGridEntry), UiaCore.NavigateDirection.FirstChild => parent.GetFirstChildProperty(_owningCategoryGridEntry), UiaCore.NavigateDirection.LastChild => parent.GetLastChildProperty(_owningCategoryGridEntry), _ => base.FragmentNavigate(direction), });
// If the control is used as an item of a ToolStrip via ToolStripControlHost, // its accessible object should provide info about the owning ToolStrip and items-siblings // to build a correct ToolStrip accessibility tree. internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction) { if (Owner.ToolStripControlHost is not ToolStripControlHost host) { return(base.FragmentNavigate(direction)); } if (direction == UiaCore.NavigateDirection.Parent || direction == UiaCore.NavigateDirection.PreviousSibling || direction == UiaCore.NavigateDirection.NextSibling) { return(host.AccessibilityObject.FragmentNavigate(direction)); } return(base.FragmentNavigate(direction)); }
internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction) { ListViewGroupAccessibleObject?owningGroupAccessibleObject = (ListViewGroupAccessibleObject?)_owningGroup?.AccessibilityObject; switch (direction) { case UiaCore.NavigateDirection.Parent: return(owningGroupAccessibleObject ?? _owningListView.AccessibilityObject); case UiaCore.NavigateDirection.NextSibling: if (owningGroupAccessibleObject is null) { ListViewAccessibleObject listViewAccessibilityObject = (ListViewAccessibleObject)_owningListView.AccessibilityObject; return(listViewAccessibilityObject.GetNextChild(this)); } return(owningGroupAccessibleObject.GetNextChild(this)); case UiaCore.NavigateDirection.PreviousSibling: if (owningGroupAccessibleObject is null) { ListViewAccessibleObject listViewAccessibilityObject = (ListViewAccessibleObject)_owningListView.AccessibilityObject; return(listViewAccessibilityObject.GetPreviousChild(this)); } return(owningGroupAccessibleObject.GetPreviousChild(this)); case UiaCore.NavigateDirection.FirstChild: if (_owningItem.SubItems.Count > 0) { return(GetChild(0)); } break; case UiaCore.NavigateDirection.LastChild: int subItemsCount = _owningItem.SubItems.Count; if (subItemsCount > 0) { return(GetChild(subItemsCount - 1)); } break; } return(base.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 UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction) { if (direction == UiaCore.NavigateDirection.FirstChild) { return(GetChildFragment(0)); } else if (direction == UiaCore.NavigateDirection.LastChild) { var childFragmentCount = GetChildFragmentCount(); if (childFragmentCount > 0) { return(GetChildFragment(childFragmentCount - 1)); } } return(base.FragmentNavigate(direction)); }
internal override UiaCore.IRawElementProviderFragment FragmentNavigate(UiaCore.NavigateDirection direction) { switch (direction) { case UiaCore.NavigateDirection.Parent: return(Parent); case UiaCore.NavigateDirection.NextSibling: return(GetNextSibling()); case UiaCore.NavigateDirection.PreviousSibling: return(GetPreviousSibling()); default: return(base.FragmentNavigate(direction)); } }
internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction) { if (_owner.OwnerScrollButton?.Parent is not ToolStripDropDownMenu toolStripDropDownMenu) { return(null); } return(direction switch { UiaCore.NavigateDirection.Parent => toolStripDropDownMenu.AccessibilityObject, UiaCore.NavigateDirection.NextSibling => _owner.UpDirection && toolStripDropDownMenu.Items.Count > 0 ? toolStripDropDownMenu.Items[0].AccessibilityObject : null, UiaCore.NavigateDirection.PreviousSibling => !_owner.UpDirection && toolStripDropDownMenu.Items.Count > 0 ? toolStripDropDownMenu.Items[^ 1].AccessibilityObject
/// <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 UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction) { if (_parentPropertyGrid.IsHandleCreated && _parentPropertyGrid.AccessibilityObject is PropertyGrid.PropertyGridAccessibleObject propertyGridAccessibleObject) { UiaCore.IRawElementProviderFragment navigationTarget = propertyGridAccessibleObject.ChildFragmentNavigate(this, direction); if (navigationTarget is not null) { return(navigationTarget); } } return(direction switch { UiaCore.NavigateDirection.FirstChild => IsSortedByCategories?GetCategory(0) : GetChild(0), UiaCore.NavigateDirection.LastChild => IsSortedByCategories?GetLastCategory() : GetLastChild(), _ => base.FragmentNavigate(direction) });
internal override UiaCore.IRawElementProviderFragment FragmentNavigate(UiaCore.NavigateDirection direction) { if (!_owner.IsHandleCreated) { return(null); } return(direction switch { UiaCore.NavigateDirection.Parent => _owner.AccessibilityObject, UiaCore.NavigateDirection.PreviousSibling => _owner.DropDownStyle == ComboBoxStyle.DropDownList ? _owner.ChildTextAccessibleObject : _owner.ChildEditAccessibleObject, // We should return null for NextSibling because it is always the last item in the tree UiaCore.NavigateDirection.NextSibling => null, _ => base.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 UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction) { if (!_owningComboBox.IsHandleCreated) { return(null); } switch (direction) { case UiaCore.NavigateDirection.FirstChild: return(GetFirstChild()); case UiaCore.NavigateDirection.LastChild: return(GetLastChild()); default: return(base.FragmentNavigate(direction)); } }
internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction) { switch (direction) { case UiaCore.NavigateDirection.Parent: DataGridViewCell currentCell = _ownerDataGridView.CurrentCell; if (currentCell is not null && _ownerDataGridView.IsCurrentCellInEditMode) { return(currentCell.AccessibilityObject); } break; case UiaCore.NavigateDirection.FirstChild: case UiaCore.NavigateDirection.LastChild: return(_ownerDataGridView.EditingControlAccessibleObject); } return(null); }
/// <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 UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction) { if (_parentPropertyGrid.IsHandleCreated && _parentPropertyGrid.AccessibilityObject is PropertyGrid.PropertyGridAccessibleObject propertyGridAccessibleObject) { UiaCore.IRawElementProviderFragment navigationTarget = propertyGridAccessibleObject.ChildFragmentNavigate(this, direction); if (navigationTarget is not null) { return(navigationTarget); } } if (_owningPropertyGridView.OwnerGrid.SortedByCategories) { switch (direction) { case UiaCore.NavigateDirection.FirstChild: return(GetFirstCategory()); case UiaCore.NavigateDirection.LastChild: return(GetLastCategory()); } } else { switch (direction) { case UiaCore.NavigateDirection.FirstChild: return(GetChild(0)); case UiaCore.NavigateDirection.LastChild: int childCount = GetChildCount(); if (childCount > 0) { return(GetChild(childCount - 1)); } return(null); } } return(base.FragmentNavigate(direction)); }
internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction) { AccessibleObject _parentInternal = _owningListView.AccessibilityObject; switch (direction) { case UiaCore.NavigateDirection.Parent: return(_parentInternal); case UiaCore.NavigateDirection.NextSibling: int childIndex = _parentInternal.GetChildIndex(this); return(childIndex == -1 ? null : _parentInternal.GetChild(childIndex + 1)); case UiaCore.NavigateDirection.PreviousSibling: return(_parentInternal.GetChild(_parentInternal.GetChildIndex(this) - 1)); } return(base.FragmentNavigate(direction)); }
internal override UiaCore.IRawElementProviderFragment FragmentNavigate(UiaCore.NavigateDirection direction) { switch (direction) { case UiaCore.NavigateDirection.FirstChild: return(GetChildFragment(0)); case UiaCore.NavigateDirection.LastChild: var childFragmentCount = GetChildFragmentCount(); if (childFragmentCount > 0) { return(GetChildFragment(childFragmentCount - 1)); } break; } return(base.FragmentNavigate(direction)); }
internal override UiaCore.IRawElementProviderFragment FragmentNavigate(UiaCore.NavigateDirection direction) { switch (direction) { case UiaCore.NavigateDirection.Parent: Debug.WriteLine("Edit parent " + _owner.AccessibilityObject.GetPropertyValue(UiaCore.UIA.ControlTypePropertyId)); return(_owner.AccessibilityObject); case UiaCore.NavigateDirection.NextSibling: if (_owner.DropDownStyle == ComboBoxStyle.Simple) { return(null); } if (_owner.AccessibilityObject is ComboBoxAccessibleObject comboBoxAccessibleObject) { int comboBoxChildFragmentCount = comboBoxAccessibleObject.GetChildFragmentCount(); if (comboBoxChildFragmentCount > 1) { // DropDown button is next; return(comboBoxAccessibleObject.GetChildFragment(comboBoxChildFragmentCount - 1)); } } return(null); case UiaCore.NavigateDirection.PreviousSibling: comboBoxAccessibleObject = _owner.AccessibilityObject as ComboBoxAccessibleObject; if (comboBoxAccessibleObject != null) { AccessibleObject firstComboBoxChildFragment = comboBoxAccessibleObject.GetChildFragment(0); if (RuntimeId != firstComboBoxChildFragment.RuntimeId) { return(firstComboBoxChildFragment); } } return(null); default: return(base.FragmentNavigate(direction)); } }
internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction) { if (!_owningListView.IsHandleCreated) { return(null); } int childCount = GetChildCount(); if (childCount == 0) { return(null); } return(direction switch { UiaCore.NavigateDirection.FirstChild => GetChild(0), UiaCore.NavigateDirection.LastChild => GetChild(childCount - 1), _ => base.FragmentNavigate(direction) });
internal override UiaCore.IRawElementProviderFragment? FragmentNavigate(UiaCore.NavigateDirection direction) { if (Owner is null) { throw new InvalidOperationException(SR.DataGridViewCellAccessibleObject_OwnerNotSet); } if (Owner.OwningRow is null) { return(null); } return(direction switch { UiaCore.NavigateDirection.Parent => Owner.OwningRow.AccessibilityObject, UiaCore.NavigateDirection.NextSibling => (Owner.DataGridView is not null && Owner.DataGridView.Columns.GetColumnCount(DataGridViewElementStates.Visible) > 0) ? Owner.OwningRow.AccessibilityObject.GetChild(1) // go to the next sibling : null, _ => null, });
internal override UiaCore.IRawElementProviderFragment FragmentNavigate(UiaCore.NavigateDirection direction) { int childCount = _owningListBox.Items.Count; if (childCount == 0) { return(null); } switch (direction) { case UiaCore.NavigateDirection.FirstChild: return(GetChild(0)); case UiaCore.NavigateDirection.LastChild: return(GetChild(childCount - 1)); default: return(base.FragmentNavigate(direction)); } }
internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction) { if (!_owningListView.IsHandleCreated || _owningListView.VirtualMode) { return(null); } switch (direction) { case UiaCore.NavigateDirection.Parent: return(_owningListView.AccessibilityObject); case UiaCore.NavigateDirection.NextSibling: return((_owningListView.AccessibilityObject as ListView.ListViewAccessibleObject)?.GetNextChild(this)); case UiaCore.NavigateDirection.PreviousSibling: return((_owningListView.AccessibilityObject as ListView.ListViewAccessibleObject)?.GetPreviousChild(this)); case UiaCore.NavigateDirection.FirstChild: int childCount = GetChildCount(); if (childCount > 0) { return(GetChild(0)); } return(null); case UiaCore.NavigateDirection.LastChild: childCount = GetChildCount(); if (childCount > 0) { return(GetChild(childCount - 1)); } return(null); default: return(null); } }
internal override UiaCore.IRawElementProviderFragment FragmentNavigate(UiaCore.NavigateDirection direction) { if (_owner == null) { throw new InvalidOperationException(SR.DataGridViewCellAccessibleObject_OwnerNotSet); } if (_owner.OwningColumn == null || _owner.OwningRow == null) { return(null); } switch (direction) { case UiaCore.NavigateDirection.Parent: return(_owner.OwningRow.AccessibilityObject); case UiaCore.NavigateDirection.NextSibling: return(NavigateForward(false)); case UiaCore.NavigateDirection.PreviousSibling: return(NavigateBackward(false)); case UiaCore.NavigateDirection.FirstChild: case UiaCore.NavigateDirection.LastChild: if (_owner.DataGridView.CurrentCell == _owner && _owner.DataGridView.IsCurrentCellInEditMode && _owner.DataGridView.EditingControl != null) { return(_child); } break; default: return(null); } return(null); }
/// <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 UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction) { if (!_owningComboBox.IsHandleCreated) { return(null); } switch (direction) { case UiaCore.NavigateDirection.Parent: return(_owningComboBox.AccessibilityObject); case UiaCore.NavigateDirection.FirstChild: return(GetChildFragment(0)); case UiaCore.NavigateDirection.LastChild: var childFragmentCount = GetChildFragmentCount(); if (childFragmentCount > 0) { return(GetChildFragment(childFragmentCount - 1)); } return(null); case UiaCore.NavigateDirection.NextSibling: return(_owningComboBox.DropDownStyle == ComboBoxStyle.DropDownList ? _owningComboBox.ChildTextAccessibleObject : _owningComboBox.ChildEditAccessibleObject); case UiaCore.NavigateDirection.PreviousSibling: // A workaround for an issue with an Inspect not responding. It also simulates native control behavior. return(_owningComboBox.DropDownStyle == ComboBoxStyle.Simple ? _owningComboBox.ChildListAccessibleObject : null); default: return(base.FragmentNavigate(direction)); } }
internal override UiaCore.IRawElementProviderFragment FragmentNavigate(UiaCore.NavigateDirection direction) { if (direction == UiaCore.NavigateDirection.Parent) { return(_owner.AccessibilityObject); } else if (direction == UiaCore.NavigateDirection.PreviousSibling) { if (_owner.AccessibilityObject is ComboBoxAccessibleObject comboBoxAccessibleObject) { int comboBoxChildFragmentCount = comboBoxAccessibleObject.GetChildFragmentCount(); if (comboBoxChildFragmentCount > 1) { // Text or edit is previous; return(comboBoxAccessibleObject.GetChildFragment(comboBoxChildFragmentCount - 1)); } } return(null); } return(base.FragmentNavigate(direction)); }
internal override UiaCore.IRawElementProviderFragment? FragmentNavigate(UiaCore.NavigateDirection direction) { switch (direction) { case UiaCore.NavigateDirection.Parent: return(Parent); case UiaCore.NavigateDirection.NextSibling: if (Parent.GetChildCount() > 1) { if (_ownerDataGridView is null) { throw new InvalidOperationException(SR.DataGridViewTopRowAccessibleObject_OwnerNotSet); } return(_ownerDataGridView.Rows.Count == 0 ? null : Parent.GetChild(1)); } break; case UiaCore.NavigateDirection.FirstChild: if (GetChildCount() > 0) { return(GetChild(0)); } break; case UiaCore.NavigateDirection.LastChild: if (GetChildCount() > 0) { return(GetChild(GetChildCount() - 1)); } break; } return(null); }
internal override UiaCore.IRawElementProviderFragment FragmentNavigate(UiaCore.NavigateDirection direction) { if (Owner.OwningColumn == null) { return(null); } switch (direction) { case UiaCore.NavigateDirection.Parent: return(Parent); case UiaCore.NavigateDirection.NextSibling: return(NavigateForward()); case UiaCore.NavigateDirection.PreviousSibling: return(NavigateBackward()); default: return(null); } }