JAWS 未读取列表视图列 headers

JAWS not reading listview column headers

我已经在 .Net 中创建了一个 C# windows 表单应用程序。它有一个主要形式。主窗体有一个包含四列的 ListView 控件,如下所示:

  1. 名字
  2. 姓氏
  3. 年龄
  4. 性别

我用 1 行的以下值填充列表视图

  1. 名字 - Rasik
  2. 姓氏 - 比哈里
  3. 年龄 - 32
  4. 性别 - 男

截图如下:

我正在尝试通过 JAWS 屏幕 reader 工具测试 specially-abled 用户的可访问性。问题是每当我 select 其中一行时,它只会一一读取所有列值的值。它不会读取 header 文本。我的期望是它应该读作 - 名字:Rasik,姓氏:Bihari,年龄:32,性别:男性。

JAWS 支持某些键盘快捷键以明确实现此行为。就像你按 Insert + Ctrl + 1 那么它会像这样读取第一列的值 - 名字:Rasik。如果您按 Insert + Ctrl + 2,那么它会像这样读取第二列的值 - 姓氏:Bihari。默认情况下,只要我们 select listView 控件中的一行,我就希望这种行为,即它应该读取 'column header text' : 'column value' 对中的整行。如果需要设置 listView 控件的任何 属性 或 JAWS 中的任何设置可以提供帮助,有人对此有任何线索吗?

如果您正在寻找示例行为,请转到 Visual Studio -> Debug Menu -> Attach to Process。在 Attach to process window 中有一个组框 "Available Processes",它显示了您可以将代码附加到的所有可用进程的列表。它也是一个列表视图控件。当我 运行 JAWS 与 visual studio 时,在这个 window 上它非常好地读取所有列 header 文本和列值对,在我 select 的那一刻鼠标一行。

在同一台机器上,JAWS 对于我的示例应用程序表现不同。

我自己解决了这个问题。实现它不需要额外的编码。实际上,JAWS 默认会通过其配置抑制这种阅读行为。您需要显式配置 JAWS 以 <Column Header>-<Column Value> 方式读取列表视图的行。

当您的应用程序 运行 并且当前焦点位于正在显示的表单上的列表视图控件上时,请按 JAWS KEY + F2 。它会打开 JAWS 管理器弹出窗口,显示可以配置的所有项目的列表。选择第二个选项“Customize ListView”并按 OK,如下面的快照所示:

在“自定义 Headers”window 上,您会看到当前选中了“忽略”单选按钮,如下面的快照所示:

将单选按钮选择更改为适当的选项以更改列表视图控件的屏幕阅读行为。

最令人恼火的问题是,需要为应用程序中出现的每个列表视图控件单独完成此配置。没有集中机制可以一次性为您的整个应用程序配置它。

注意:由于默认情况下 JAWS 配置为只读列值当然意味着它适合 specially-abled 用户。 Freedom scientific 必须围绕它进行研究,因为阅读专栏 headers 可能是不想要的无关信息。此外,如果有特殊能力的用户需要阅读 headers 列,那么 <JAWS KEY> + Ctrl + <Column Header Index> 选项总是在那里以该格式阅读。

此外,不同的屏幕 reader 工具,如 thunder storm、NVDA 在这种列表视图读取的情况下有不同的行为。