dotnet / winforms

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

Move next, move last, add new, delete buttons ,Progress bar present in the corner and sorting functionality in the grid is not accessible using keyboard keys: A11y_.NET CoreWinforms_DataControls_Upper section_Keyboard #11440

Closed PoojaNamde closed 3 weeks ago

PoojaNamde commented 1 month ago

.NET version

dotnet-sdk-9.0.100-preview.5.24258.1

Did it work in .NET Framework?

Yes

Did it work in any of the earlier releases of .NET Core or .NET 5+?

No response

Issue description

GitHub Tags:

A11yMAS; #A11yTCS; #A11ySev2; #BM_.NET Core[Winforms]_Win32_May2024; #.NETCore; #WCAG2.1.1; #DesktopApp; #Win11; #FTP; #Keyboard;

Environment Details:

App name: .NET Core Winforms Window Version: Win 11 OS Build: 22621.3085

Repro Steps:

  1. Launch the "Accessibility core app".
  2. Main Form screen would appear.
  3. TAB to "DataControls:Testing the controls under the Data" and hit ENTER key.
  4. Navigate using TAB key and observe the issue.

Actual Result:

Move next, move last, add new, delete buttons, Progress bar present in the corner and sorting functionality in the grid is not accessible using keyboard keys

Expected Result:

Move next, move last, add new, delete buttons, Progress bar present in the corner and sorting functionality in the grid should be accessible using keyboard TAB/ arow keys.

User Impact:

Keyboard users will not be able to interact with the control and will miss the information related to it.

Attachment:

https://github.com/dotnet/winforms/assets/90901519/49f13eca-d713-4e38-b4e4-4babaa1ec17d

John-Qiao commented 1 month ago

If the current cell is bindingNavigatorPositionItem in BindingNavigator control: we can use Alt + Left/Right arrow to move the focus to last or next. And we can use Alt + Down arrow to expands the corner in BindingNavigator. But as far as I known the ProgressBar control is not accessible.

For DataGridView control, we can click F3 to sorting cells in column. To delete the row, we can use Ctrl + A to select all, then click Up/Down arrow to focus on specific row and click Delete keyboard.

https://github.com/dotnet/winforms/assets/45864985/f083fb94-9ca7-4207-9eed-892845476421

merriemcgaw commented 1 month ago

All of the expected keyboard navigation behaviors can be found here

Yash14j commented 1 month ago

Github Tags:#Rev:yaja;

merriemcgaw commented 1 month ago

@John-Qiao how does the user get to the buttons in the first place? Can we go into the ToolStrip? Can you set TabStop on the whole strip?

John-Qiao commented 1 month ago

@merriemcgaw @Tanya-Solyanik we had set the TabStop = True for bindingNavigator in that App, does the "first place" mean 'Move first' button in the bindingNavigator? If yes, we can use the Tab or Right/Left arrow key to focus on it when it is enabled.

https://github.com/dotnet/winforms/assets/45864985/0850bbeb-21ec-46b7-b0d1-e23738611303

merriemcgaw commented 4 weeks ago

@PoojaNamde can you clarify what's missing here?

I don't think there's anything missing from the functionality. @PoojaNamde please help us understand next steps here.

PoojaNamde commented 4 weeks ago

@merriemcgaw

  1. F3 key for sorting is working.
  2. Alt + Left/Right arrow to move the focus to last or next is not working.
  3. To delete the row, we can use Ctrl + A to select all, then click Up/Down arrow to focus on specific row and click Delete keyboard.

Could you please provide the working keys for move next or last. Also could you pls provide confirmation whether these keys are documented.

merriemcgaw commented 3 weeks ago

As I mentioned earlier the keys are all documented here

The alt+ arrow keys should be used when focus is in the DataGrid, not from the ToolStrip. Have you tried that?

PoojaNamde commented 3 weeks ago

Keys provided in the document are working as expected and we are able to access all the controls, hence closing the bug.

  1. F3 key for sorting is working.
  2. Alt + Left/Right arrow to move the focus to last or next is not working.
  3. To delete the row, we can use Ctrl + A to select all, then click Up/Down arrow to focus on specific row and click Delete keyboard.
  4. pg dn to move last and pg up to move first.

Document: https://learn.microsoft.com/en-us/dotnet/desktop/winforms/controls/default-keyboard-and-mouse-handling-in-the-windows-forms-datagridview-control?view=netframeworkdesktop-4.8