Update DataGrid internal properties and add accessibility tests - #41
Merged
Conversation
- Updated multiple DataGrid-related classes to override IsInternal property to return false, enhancing accessibility compliance. - Introduced a new test for DataGrid accessibility objects to ensure legacy property accessors are used.
Timothy-Stiles
approved these changes
Aug 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
UiPath reads module search grids through the MSAA accessibility tree published by the legacy WinForms DataGrid that ZGrid/ZDisplayGrid derives from. Verified in the live client that the managed accessible objects return fully correct data (column header "Consol ID", row "C00001000", cell "Type" / "AGT"). The values are lost only when crossing the COM/MSAA boundary: Role and State come through correctly, while Name, Value and DefaultAction come back empty.
Cause: AccessibleObject.IsInternal returns true for any accessible object declared inside System.Windows.Forms.dll. Migrating the legacy DataGrid into that assembly (commit 9bf6797, WI01041726, 20-Mar-2026) therefore enabled the CanGetNameInternal / CanGetValueInternal fast paths, which delegate to the OS default provider instead of the control's overridden Name and Value properties. The DataGrid accessible objects only override Name and Value, so nothing is returned.
This worked on the customer's Production version because it still uses the in-box .NET Framework 4.8 WinForms, which has no such optimisation.
Suggested fix: override IsInternal to false on the migrated legacy accessible objects in the fork's Controls/Unsupported folder. This restores Name, Value, DefaultAction, Description, Help and KeyboardShortcut in one change and matches .NET Framework behaviour.
Impact is wider than reported: all ZGrid-based grids, and all assistive technology including screen readers. A standalone A/B repro (.NET 4.8 PASS vs .NET 10 FAIL) is available. Full analysis attached in eDocs.