[A11Y] Screen Reader doesn't announce what control gets focused
Environment
VisualStudio.17.Preview/17.11.0-pre.5.0+35118.90
.NET version
8.0
Did this work in a previous version of Visual Studio and/or previous .NET release?
No, never in the out of process designer
Issue description
When the out of process designer has focus and you try to move between the controls on the form screen readers aren't able to detect the focus change and are therefore quiet. This makes it impossible to work with the designer in a sufficient way. You can press F4 to focus the property editor and tab to the components combo to select the component you want to work with but that's extremely insufficient.
Steps to reproduce
- Start a screen reader like Narrator, NVDA or JAWS.
- Start Visual Studio and create a new WinForms application targeting .NET 8.
- Press Ctrl +Alt + L to focus the Solution Manager and navigate to the form Form1 and press Enter to open it.
- Press Esc to ensure you're in the designer and at the top level, i e on the form.
- Press Alt + V, X and press Enter to open the Toolbox.
- Type Button and press Enter to add a button to the form.
- Press Esc a couple of times to be really sure you're at the form level.
- Press Tab to focus the button.
The screen reader doesn't announce that the button got focused.
Diagnostics
No response
One solution would be to make the out of process designer emit a message to screen readers that makes them announce the text passed. When a control gets focus it should announce its name and type of control (try the old designer for .NET Framework did). When a control is moved with the arrow keys it could announce the new position. When a control is moved with the arrow keys and Ctrl is held down so it aligns with another control it could announce what edge it's aligned with.
There are probably other nice cases that can be added to.
@Tanya-Solyanik verified this issue with latest VS 17.12.0 Preview 3.0 [35324.145.main] from main branch:
Narrator cannot focus and announce on the form1 or button1 in VS design time when using mouse click or keyboard to switch between form1 and button1. https://github.com/user-attachments/assets/ec8e2cd9-bb5e-4ab0-9c01-810b093f464f
NVDA does not announce the form1 or button1 in VS design time when using mouse click or keyboard to switch between form1 and button1. https://github.com/user-attachments/assets/ac382641-cdff-40c3-9868-3fe1899d1316
@towebo we'd love to engage with you about exactly what announcements and information you would like to have the Screen Reader tell you. Let us know if you'd be up for a Teams call and we can connect.
I'd love to connect with you on this topic.
@merriemcgaw, you can reach out to [email protected] with suggestions on when to connect.
Would really like to see it fixed as soon as possible.
Yeah, quite an annoying one, would be nice to have it fixed. I'm available for calls, chats, emails, whatever you want.
I too am available for the discussion
I used to use winforms a lot when I could use the keyboard to move the controls , and it made design so much faster to use tab/shift+tab to move through the controls on the form. Please, Please, Please bring this back Microsoft!
@merriemcgaw, please reach out to me so we can resolve this as soon as possible.
We are actively working on announcements in the designer, and we acknowledge that the work has been delayed before. I'll keep you posted on developments and let you know as soon as we have preview builds available with our first iteration. I will reach out sometime early in the new year to connect with you all individually about what you need most from these announcements.
In the meantime, if you haven't tried using the DocumentOutline Window in Visual Studio while designing forms, it does announce and can be very useful in navigating and understanding the hierarchy of controls within the form.
~Merrie
I tried the Document Outline View and yes, it gives a clear picture of the hierarchy and it's easy to collapse and expand the tree. However there's a clear backdraw in that it seens to order the controls in creation order, not in tab order. This makes it very hard to check if the tab order is correct because you have to check and try to remember the TabIndex property and that isn't for humans. :)
Is this issue still active? The last entry from Microsoft was almost six months ago. If the work has been pause it would be nice to know so we can figure out if there's possible workarounds.
So this issue doesn't seem to be resolved in the near future so I've created an addon for NVDA that works around the issue. If you can't use the primary source of information, the out of process designer, you can watch reflections in the mirror. In this case I monitor the value of the Components combobox in the Property Editor.
You can read more and download the addon from my site: https://mawingu.se/winforms-designer-accessibilizer-addon
The source for the addon is availible from the GitHub repository: https://github.com/towebo/WinFormsDesignerAccessibilizer
Thank you so much for these suggestions and ideas! We're actively picking this work up but due to resource constraints it's taking longer than we would have liked.