dotnet / winforms

Windows Forms is a .NET UI framework for building Windows desktop applications.
MIT License
4.41k stars 982 forks source link

[A11Y] Screen Reader doesn't announce what control gets focused #12217

Open towebo opened 1 month ago

towebo commented 1 month ago

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

  1. Start a screen reader like Narrator, NVDA or JAWS.
  2. Start Visual Studio and create a new WinForms application targeting .NET 8.
  3. Press Ctrl +Alt + L to focus the Solution Manager and navigate to the form Form1 and press Enter to open it.
  4. Press Esc to ensure you're in the designer and at the top level, i e on the form.
  5. Press Alt + V, X and press Enter to open the Toolbox.
  6. Type Button and press Enter to add a button to the form.
  7. Press Esc a couple of times to be really sure you're at the form level.
  8. Press Tab to focus the button.

The screen reader doesn't announce that the button got focused.

Diagnostics

No response

towebo commented 1 month ago

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.

John-Qiao commented 1 month ago

@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

merriemcgaw commented 2 weeks ago

@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.

towebo commented 2 weeks ago

I'd love to connect with you on this topic.

towebo commented 5 days ago

@merriemcgaw, you can reach out to karl-otto@towebo.se with suggestions on when to connect.

akash07k commented 5 days ago

Would really like to see it fixed as soon as possible.

Menelion commented 5 days ago

Yeah, quite an annoying one, would be nice to have it fixed. I'm available for calls, chats, emails, whatever you want.

akash07k commented 5 days ago

I too am available for the discussion