I'm looking for a way to force a winforms controls which already has focus to be (re)announced by the screen reader.
The situation is that I have a manually painted area which the user is able to navigate around using the arrow keys, but since it's only a single control the focus is always the same so the screen reader only announces the control on the initial focus.
I have tried Focus()
ing (and Select()
ing) on a second control then immediately Focus()
ing back, but this doesn't trigger the screen reader. The only way I've managed to get that working is to get the second control to wait 100ms then refocus back from a background thread, but then the second control is announced to the user, and there's a minefield of edge cases and race conditions.
It looks like UIA LiveRegions is the solution for this for .NET 4.7+, but I'm stuck on 4.6.
Any ideas how I can force the screen reader to re-announce the control under focus?