C# MSAA--Dragon无法与TableLayoutPanel交互

C# MSAA--Dragon无法与TableLayoutPanel交互,c#,winforms,accessibility,tablelayoutpanel,naturallyspeaking,C#,Winforms,Accessibility,Tablelayoutpanel,Naturallyspeaking,我正在修改Winforms应用程序,以便通过Dragon Professional 15访问。我最近还添加了对屏幕阅读器(包括JAWS和MAGic)的支持,因此对应用程序进行了大部分审查,以确保填写AccessibleName(以及在适当情况下,AccessibleRole)属性 Dragon在该应用程序的大部分方面都做得相当好,但在某些方面它完全无法运行。经过多次尝试和错误,我能够确定问题的原因是在我的应用程序中使用了TableLayoutPanels。Dragon无法使用驻留在TableLa

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

Dragon在该应用程序的大部分方面都做得相当好,但在某些方面它完全无法运行。经过多次尝试和错误,我能够确定问题的原因是在我的应用程序中使用了TableLayoutPanels。Dragon无法使用驻留在TableLayoutPanel中的任何控件(即,当我说出AccessibleName值时,Dragon无法找到该控件)。例如,此文档树中的按钮在以下配置中工作正常:

(注意:noFocusCueButton类源于按钮,在类的视觉方面只有微小的变化。)

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


…Dragon无法再检测到NOFOCUSCUE按钮并与之交互。我在TableLayoutPanel上搜索了一些可能解释这一点的属性,但我没有看到任何明显的内容。我也搜索过其他遇到这个问题的人,但没有找到任何答案。有那么多专家知道这方面的情况吗?

在只能被称为“我生命的故事”的文章中,我在发布问题后不到几分钟就发现了问题(尽管我之前花了几个小时)


显然,在某个时刻,TableLayoutPanelAccessibleRole属性被设置为List。将其设置回默认值修复了问题。

在只能称为“我的生活故事”的文章中,我在发布问题后不到几分钟就发现了问题(尽管我之前花了几个小时)


显然,在某个时刻,TableLayoutPanelAccessibleRole属性被设置为List。将其设置回默认值修复了该问题。

MSAA和UI自动化都可以完全访问TLP的子控件。当然,它们的角色和名称属性不会以任何方式改变。与子控件的
窗口
角色相关,还有一个嵌套级别。MSAA和UI自动化都可以完全访问TLP的子控件。当然,它们的角色和名称属性不会以任何方式改变。关于子控件的
窗口
角色,还有一个层次的嵌套。回答您自己的问题没有错:-)作为一个纯web的可访问性顾问,当我总是被问及应用程序的可访问性,不得不像白痴一样摸索时,这样的东西非常有用+1回答您自己的问题没什么错:-)作为一名纯网络辅助功能顾问,当我总是被问及应用程序辅助功能,不得不像个白痴一样摸索时,像这样的东西非常适合我+1.