我在.Net中创建了一个C#windows窗体应用程序。它有一个主要形式。主窗体有一个ListView控件,有四列,如下所示:
我使用以下值
的1行填充列表视图以下是截图:
我正试图通过JAWS屏幕阅读器工具测试其对特殊用户的可访问性。问题是每当我选择其中一行时,它只会逐个读取所有列值的值。它不会随之读取标题文本。我的期望是它应该读作:名字:Rasik,姓:Bihari,年龄:32岁,性别:男。
JAWS支持一些键盘快捷键以明确地显示此行为。就像你按下Insert + Ctrl + 1
一样,它会像这样读取第一列的值 - 名字:Rasik。如果按Insert + Ctrl + 2
,它将会读取第二列的值,如下所示:姓氏:Bihari。默认情况下我想要这种行为,我们在listView控件中选择一行,即它应该读取“列标题文本”中的整行:“列值”对。如果有需要设置的listView控件的任何属性或者JAWS中的任何设置可以提供帮助,有没有人对此有任何线索?
如果您正在寻找示例行为,请转到Visual Studio -> Debug Menu -> Attach to Process
。在“附加到流程”窗口中,有一个“可用流程”组框,其中显示了可以附加代码的所有可用流程的列表。它也是listview控件。当我使用visual studio运行JAWS时,在这个窗口上,当我通过鼠标选择一行时,它会很好地逐个读取所有列标题文本和列值对。
在同一台机器上,JAWS对我的示例应用程序的行为有所不同。
答案 0 :(得分:1)
我能够自己解决这个问题。没有额外的编码来实现它。实际上,JAWS默认通过其配置来抑制这种读取行为。您需要显式配置JAWS以<Column Header>-<Column Value>
方式读取列表视图的行。
当您的应用程序正在运行且当前焦点位于正在显示的表单上的列表视图控件时,请按<JAWS KEY> + F2
。它打开JAWS管理器弹出窗口,显示可以配置所有项目的列表。选择第二个选项&#34;自定义ListView&#34;然后按OK,如下面的快照所示:
在&#34;自定义标题&#34;窗口你会看到目前&#34;忽略&#34;选择单选按钮,如下面的快照所示:
将单选按钮选择更改为适当的选项,以更改列表视图控件的屏幕阅读行为。
最令人恼火的问题是,此配置需要针对应用程序中出现的每个列表视图控件单独完成。没有集中的机制可以为您的整个应用程序一次性配置它。
注意:由于默认情况下JAWS配置为只读列值当然意味着它适用于特殊用户。自由科学必须围绕它进行研究,因为阅读列标题可能是一次无法获得的无关信息。此外,如果特殊能力的用户需要阅读列标题,那么<JAWS KEY> + Ctrl + <Column Header Index>
选项始终以该格式读取。
此外,不同的屏幕阅读器工具如雷霆风暴,NVDA在这种列表视图阅读的情况下有不同的行为。