MSAA - Дракон не может взаимодействовать с TableLayoutPanel - PullRequest
0 голосов
/ 20 марта 2020

Я изменяю приложение Winforms, чтобы оно было доступно через Dragon Professional 15. Я также недавно добавил поддержку программ чтения с экрана (включая J AWS и MAGi c), так что приложение, по большей части, было рассмотрено чтобы убедиться, что свойство AccessibleName (и, при необходимости, AccessibleRole ) заполнено.

Dragon довольно хорошо справляется с большинством приложений, но есть части, с которыми он совершенно не работает. После многих проб и ошибок я смог определить, что причиной проблемы было использование TableLayoutPanels в моем приложении. Любой элемент управления, который находится в TableLayoutPanel , не потребляется Dragon (ie. Когда я говорю о значении AccessibleName , Dragon не может найти элемент управления). Например, кнопка в этом дереве документов прекрасно работает в следующей конфигурации:

working document configuration

(Примечание: noFocusCueButton класс происходит от Button и имеет только незначительные изменения, касающиеся визуальных аспектов класса.)

В этой конфигурации я могу говорить AccessibleName из noFocusCueButton и Дракон распознает его и щелкнет по нему. Однако, как только я перехожу к этой конфигурации:

broken document configuration

... Дракон больше не может обнаруживать и взаимодействовать с noFocusCueButton . Я искал какое-то свойство на TableLayoutPanel , которое могло бы объяснить это, но я не вижу ничего очевидного. Я также искал других людей, сталкивающихся с этой проблемой, но ничего не придумал. Кто-нибудь из ТАКИХ экспертов знает что-нибудь об этом?

1 Ответ

2 голосов
/ 20 марта 2020

В том, что можно описать только как «историю моей жизни», я обнаружил проблему менее чем через несколько минут после публикации вопроса (хотя я потратил на него часы заранее).

Очевидно, в какой-то момент свойство AccessibleRole TableLayoutPanel было установлено на Список . Установка его на По умолчанию исправила проблему.

...