public void GridViewEditAccessibleObject_FragmentNavigate_navigates_correctly() { using PropertyGrid propertyGrid = new PropertyGrid { SelectedObject = Point.Empty }; propertyGrid.CreateControl(); PropertyGridView propertyGridView = propertyGrid.TestAccessor().GridView; int firstPropertyIndex = 2; // Index of Text property which has a RichEdit control as an editor. PropertyDescriptorGridEntry gridEntry = (PropertyDescriptorGridEntry)propertyGridView.AccessibilityGetGridEntries()[firstPropertyIndex]; propertyGridView.TestAccessor().Dynamic.selectedGridEntry = gridEntry; UiaCore.IRawElementProviderFragment editFieldAccessibleObject = gridEntry.AccessibilityObject.FragmentNavigate(UiaCore.NavigateDirection.FirstChild); Assert.Equal("GridViewEditAccessibleObject", editFieldAccessibleObject.GetType().Name); // The case with drop down holder: using TestDropDownHolder dropDownHolder = new TestDropDownHolder(propertyGridView); dropDownHolder.CreateControl(); propertyGridView.TestAccessor().Dynamic.dropDownHolder = dropDownHolder; dropDownHolder.SetState(0x00000002, true); // Control class States.Visible flag Assert.True(propertyGridView.DropDownVisible); object previousAccessibleObject = editFieldAccessibleObject.Navigate(UiaCore.NavigateDirection.PreviousSibling); Assert.NotNull(previousAccessibleObject); Assert.Same(dropDownHolder.AccessibilityObject, previousAccessibleObject); }
public void GridViewTextBoxAccessibleObject_created_for_string_property() { TestEntityWithTextField testEntity = new TestEntityWithTextField { TextProperty = "Test" }; using PropertyGrid propertyGrid = new PropertyGrid { SelectedObject = testEntity }; PropertyGridView propertyGridView = propertyGrid.TestAccessor().GridView; int firstPropertyIndex = 1; // Index 0 corresponds to the category grid entry. PropertyDescriptorGridEntry gridEntry = (PropertyDescriptorGridEntry)propertyGridView.AccessibilityGetGridEntries()[firstPropertyIndex]; PropertyDescriptorGridEntry selectedGridEntry = propertyGridView.TestAccessor().Dynamic._selectedGridEntry; Assert.Equal(gridEntry.PropertyName, selectedGridEntry.PropertyName); // Force the entry edit control Handle creation. // GridViewEditAccessibleObject exists, if its control is already created. // In UI case an entry edit control is created when an PropertyGridView gets focus. Assert.NotEqual(IntPtr.Zero, propertyGridView.TestAccessor().Dynamic.EditTextBox.Handle); AccessibleObject selectedGridEntryAccessibleObject = gridEntry.AccessibilityObject; UiaCore.IRawElementProviderFragment editFieldAccessibleObject = selectedGridEntryAccessibleObject.FragmentNavigate(UiaCore.NavigateDirection.FirstChild); Assert.NotNull(editFieldAccessibleObject); Assert.Equal("GridViewTextBoxAccessibleObject", editFieldAccessibleObject.GetType().Name); }
public void PropertyDescriptorGridEntryAccessibleObject_Navigates_to_ListBoxAccessibleObject() { using var form = new Form(); using var propertyGrid = new PropertyGrid(); using var button = new Button(); propertyGrid.SelectedObject = button; form.Controls.Add(propertyGrid); form.Controls.Add(button); using PropertyGridView propertyGridView = propertyGrid.TestAccessor().GridView as PropertyGridView; int thirdPropertyIndex = 3; // Index of AccessibleRole property which has a ListBox as editor. PropertyDescriptorGridEntry gridEntry = (PropertyDescriptorGridEntry)propertyGridView.AccessibilityGetGridEntries()[thirdPropertyIndex]; propertyGridView.TestAccessor().SelectedGridEntry = gridEntry; using TestDropDownHolder dropDownHolder = new TestDropDownHolder(propertyGridView, propertyGridView.DropDownListBox); propertyGridView.TestAccessor().Dynamic.dropDownHolder = dropDownHolder; dropDownHolder.SetState(0x00000002, true); var listboxFieldAccessibleObject = gridEntry.AccessibilityObject.FragmentNavigate(UiaCore.NavigateDirection.FirstChild); Assert.Equal("GridViewListBoxAccessibleObject", listboxFieldAccessibleObject.GetType().Name); }
public void GridViewEditAccessibleObject_created_for_string_property() { TestEntityWithTextField testEntity = new TestEntityWithTextField { TextProperty = "Test" }; using PropertyGrid propertyGrid = new PropertyGrid { SelectedObject = testEntity }; PropertyGridView propertyGridView = propertyGrid.TestAccessor().GridView; int firstPropertyIndex = 1; // Index 0 corresponds to the category grid entry. PropertyDescriptorGridEntry gridEntry = (PropertyDescriptorGridEntry)propertyGridView.AccessibilityGetGridEntries()[firstPropertyIndex]; PropertyDescriptorGridEntry selectedGridEntry = propertyGridView.TestAccessor().Dynamic.selectedGridEntry; Assert.Equal(gridEntry.PropertyName, selectedGridEntry.PropertyName); AccessibleObject selectedGridEntryAccessibleObject = gridEntry.AccessibilityObject; UiaCore.IRawElementProviderFragment editFieldAccessibleObject = selectedGridEntryAccessibleObject.FragmentNavigate(UiaCore.NavigateDirection.FirstChild); Assert.NotNull(editFieldAccessibleObject); Assert.Equal("GridViewEditAccessibleObject", editFieldAccessibleObject.GetType().Name); }
public void PropertyDescriptorGridEntryAccessibleObject_ExpandCollapseState_reflects_ExpandablePropertyState() { using Form form = new Form(); using PropertyGrid propertyGrid = new PropertyGrid(); var testEntity = new TestEntity(); testEntity.FontProperty = new Font(FontFamily.GenericSansSerif, 1); propertyGrid.SelectedObject = testEntity; form.Controls.Add(propertyGrid); PropertyGridView propertyGridView = propertyGrid.TestAccessor().GridView; int firstPropertyIndex = 1; // Index 0 corresponds to the category grid entry. PropertyDescriptorGridEntry gridEntry = (PropertyDescriptorGridEntry)propertyGridView.AccessibilityGetGridEntries()[firstPropertyIndex]; var selectedGridEntry = propertyGridView.TestAccessor().SelectedGridEntry; Assert.Equal(gridEntry.PropertyName, selectedGridEntry.PropertyName); AccessibleObject selectedGridEntryAccessibleObject = gridEntry.AccessibilityObject; gridEntry.InternalExpanded = false; Assert.Equal(UiaCore.ExpandCollapseState.Collapsed, selectedGridEntryAccessibleObject.ExpandCollapseState); gridEntry.InternalExpanded = true; Assert.Equal(UiaCore.ExpandCollapseState.Expanded, selectedGridEntryAccessibleObject.ExpandCollapseState); }
public void DropDownHolder_AccessibilityObject_ReturnsExpected() { using PropertyGrid propertyGrid = new(); PropertyGridView propertyGridView = propertyGrid.TestAccessor().GridView; using PropertyGridView.DropDownHolder ownerControl = new(propertyGridView); Control.ControlAccessibleObject accessibilityObject = ownerControl.AccessibilityObject as Control.ControlAccessibleObject; Assert.Equal(ownerControl, accessibilityObject.Owner); Assert.Equal(SR.PropertyGridViewDropDownControlHolderAccessibleName, accessibilityObject.GetPropertyValue(UiaCore.UIA.NamePropertyId)); AccessibleObject selectedGridEntryAccessibleObject = null; Assert.Equal(selectedGridEntryAccessibleObject, accessibilityObject.FragmentNavigate(UiaCore.NavigateDirection.Parent)); PropertyDescriptor property = TypeDescriptor.GetProperties(typeof(PropertyGrid))[0]; PropertyDescriptorGridEntry gridEntry = new PropertyDescriptorGridEntry(propertyGrid, null, property, false); propertyGridView.TestAccessor().Dynamic._selectedGridEntry = gridEntry; ownerControl.Visible = true; selectedGridEntryAccessibleObject = gridEntry.AccessibilityObject; Assert.Equal(selectedGridEntryAccessibleObject, accessibilityObject.FragmentNavigate(UiaCore.NavigateDirection.Parent)); Assert.Equal(propertyGridView.AccessibilityObject, accessibilityObject.FragmentRoot); }
public void PropertyDescriptorGridEntryAccessibleObject_ExpandCollapseState_reflects_ExpandablePropertyState() { using PropertyGrid propertyGrid = new(); TestEntity testEntity = new(); testEntity.SizeProperty = Size.Empty; propertyGrid.SelectedObject = testEntity; PropertyGridView propertyGridView = propertyGrid.TestAccessor().GridView; int firstPropertyIndex = 1; // Index 0 corresponds to the category grid entry. var gridEntry = (PropertyDescriptorGridEntry)propertyGridView.AccessibilityGetGridEntries()[firstPropertyIndex]; var selectedGridEntry = propertyGridView.TestAccessor().Dynamic._selectedGridEntry as PropertyDescriptorGridEntry; Assert.Equal(gridEntry.PropertyName, selectedGridEntry.PropertyName); AccessibleObject selectedGridEntryAccessibleObject = gridEntry.AccessibilityObject; gridEntry.InternalExpanded = false; Assert.Equal(UiaCore.ExpandCollapseState.Collapsed, selectedGridEntryAccessibleObject.ExpandCollapseState); gridEntry.InternalExpanded = true; Assert.Equal(UiaCore.ExpandCollapseState.Expanded, selectedGridEntryAccessibleObject.ExpandCollapseState); }
public void GridViewTextBoxAccessibleObject_RuntimeId_ReturnsNull() { using PropertyGrid propertyGrid = new() { SelectedObject = new TestEntityWithTextField() { TextProperty = "Test" } }; PropertyGridView propertyGridView = propertyGrid.TestAccessor().GridView; int firstPropertyIndex = 1; // Index 0 corresponds to the category grid entry. PropertyDescriptorGridEntry gridEntry = (PropertyDescriptorGridEntry)propertyGridView.AccessibilityGetGridEntries()[firstPropertyIndex]; // Force the entry edit control Handle creation. // GridViewEditAccessibleObject exists, if its control is already created. // In UI case an entry edit control is created when an PropertyGridView gets focus. Assert.NotEqual(IntPtr.Zero, propertyGridView.TestAccessor().Dynamic.EditTextBox.Handle); AccessibleObject editFieldAccessibleObject = (AccessibleObject)gridEntry.AccessibilityObject.FragmentNavigate(UiaCore.NavigateDirection.FirstChild); propertyGridView.TestAccessor().Dynamic._selectedGridEntry = null; Assert.NotNull(editFieldAccessibleObject.RuntimeId); }
public void GridViewTextBoxAccessibleObject_FragmentNavigate_navigates_correctly() { using PropertyGrid propertyGrid = new PropertyGrid { SelectedObject = Point.Empty }; propertyGrid.CreateControl(); PropertyGridView propertyGridView = propertyGrid.TestAccessor().GridView; int firstPropertyIndex = 2; // Index of Text property which has a RichEdit control as an editor. PropertyDescriptorGridEntry gridEntry = (PropertyDescriptorGridEntry)propertyGridView.AccessibilityGetGridEntries()[firstPropertyIndex]; propertyGridView.TestAccessor().Dynamic._selectedGridEntry = gridEntry; // Force the entry edit control Handle creation. // GridViewEditAccessibleObject exists, if its control is already created. // In UI case an entry edit control is created when an PropertyGridView gets focus. Assert.NotEqual(IntPtr.Zero, propertyGridView.TestAccessor().Dynamic.EditTextBox.Handle); UiaCore.IRawElementProviderFragment editFieldAccessibleObject = gridEntry.AccessibilityObject.FragmentNavigate(UiaCore.NavigateDirection.FirstChild); Assert.Equal("GridViewTextBoxAccessibleObject", editFieldAccessibleObject.GetType().Name); // The case with drop down holder: using PropertyGridView.DropDownHolder dropDownHolder = new(propertyGridView); dropDownHolder.CreateControl(); propertyGridView.TestAccessor().Dynamic._dropDownHolder = dropDownHolder; dropDownHolder.TestAccessor().Dynamic.SetState(0x00000002, true); // Control class States.Visible flag UiaCore.IRawElementProviderFragment dropDownHolderAccessibleObject = gridEntry.AccessibilityObject.FragmentNavigate(UiaCore.NavigateDirection.FirstChild); Assert.Equal("DropDownHolderAccessibleObject", dropDownHolderAccessibleObject.GetType().Name); Assert.True(propertyGridView.DropDownVisible); object previousAccessibleObject = editFieldAccessibleObject.Navigate(UiaCore.NavigateDirection.PreviousSibling); Assert.NotNull(previousAccessibleObject); Assert.Same(dropDownHolder.AccessibilityObject, previousAccessibleObject); }
public void GridViewTextBoxAccessibleObject_Role_IsExpected_ByDefault(bool createControl, AccessibleRole expectedRole) { using PropertyGrid propertyGrid = new PropertyGrid(); PropertyGridView gridView = propertyGrid.TestAccessor().GridView; // AccessibleRole is not set = Default if (createControl) { gridView.TestAccessor().Dynamic.EditTextBox.CreateControl(true); // "true" means ignoring Visible value } AccessibleRole actual = gridView.EditAccessibleObject.Role; Assert.Equal(expectedRole, actual); Assert.False(propertyGrid.IsHandleCreated); }