MSAA -- Dragon 无法与 TableLayoutPanel 交互

MSAA -- Dragon Cannot Interact with TableLayoutPanel

我正在修改一个 Winforms 应用程序,使其可以通过 Dragon Professional 15 访问。我最近还添加了对屏幕阅读器(包括 JAWS 和 MAGic)的支持,因此该应用程序已经过大部分审查,以确保AccessibleName(并且在适当情况下,AccessibleRole)属性 已填写。

Dragon 可以很好地处理此应用程序的大部分内容,但有些部分完全无法运行。经过大量的反复试验,我能够确定问题的原因是在我的应用程序中使用了 TableLayoutPanels。 Dragon 无法使用 TableLayoutPanel 中的任何控件(即,当我说出 AccessibleName 值时,Dragon 无法找到该控件)。例如,此文档树中的按钮在以下配置中工作得很好:

(注意:noFocusCueButton class 派生自 Button 并且在 class.)

在此配置中,我可以说出 noFocusCueButtonAccessibleName,Dragon 会识别并单击它。但是,一旦我转到此配置:

...Dragon 无法再检测 noFocusCueButton 并与之交互。我在 TableLayoutPanel 上搜索了一些 属性 可以解释这一点,但我没有看到任何明显的东西。我也搜索过遇到此问题的其他人,但没有提出任何建议。那里的任何 SO 专家都知道这件事吗?

在只能描述为 "the story of my life" 的地方,我在发布问题后不到几分钟就发现了问题(尽管我事先已经花了几个小时)。

显然,在某些时候,TableLayoutPanelAccessibleRole 属性 已设置为 列表。将其设置回 默认值 解决了问题。