4

它应该很简单,但显然没有人知道:如果我在Label基于 Windows 窗体的对话框中添加一个控件,并且我希望 JAWS 读取此标签,我将如何实现呢?

使用AccessibleDescription其他控件(如按钮)可以正常工作,但不适用于标签。连MS都好像不太清楚。我也问过 FreedomScientific,但他们只是给了我一些默认答案,比如

  • 检查 www.microsoft.com/enable
  • 阅读 JAWS 帮助文件
  • 利用 JAWS 脚本(虽然我不想直接控制 JAWS)
  • 提供应用定制服务的公司地址

都不是很有帮助。

4

5 回答 5

3

I had this issue for my Windows Forms app.

It seems JAWS does not read static screen text automatically.

Pressing "INSERT" + "B" on the keyboard triggered the "Read Current Window" JAWS action - JAWS then read the Label.AccessibleDescription property (as well as other screen details).

So you need to set accessibility properties and the user has to perform JAWS keystrokes to read the labels so far as I can tell.

于 2012-05-14T12:38:22.900 回答
0

JAWS 不一定使用开发人员术语记录:如果您尝试使用 HTML,则查看 HTML 的Navigation Quick Keys 或您正在使用的元素类型的 JAWS Keystroke

尝试对 FORM 使用“F”或对 HEADING 使用“H”或 INSERT+F5 以查看表单字段列表是否显示在列表中。对于使用 JAWS 的最终用户来说,TITLE 并没有什么特定的导航辅助工具(尽管逆向工程如何通过 JAWS “呈现”它们是一个简单的试验和错误)。

于 2011-11-21T21:55:49.233 回答
0

我使用 AccessibleName 属性并将 TextBox、Button 和 ComboBox 设置为可以在该属性中读取的名称。这似乎适用于大多数事情。我还不能让它读取标签。如果标签显示动态数据,我建议将标签的动态部分(整体或部分)更改为可编辑或不可编辑的文本框,并设置其辅助功能名称。当它被标记或获得焦点时,它应该准备好 AccessibleName,然后是值。所以 tbAmoundOwed 听起来应该像“Amount Owed Text Box 125.78 美元”(或类似的东西,取决于使用 Jaws 或其他阅读器。)**** 这仍在进行中。我还没有找到如何在 ListView 中读取列标题。如果您将焦点设置到 ListView 中的一行,您通常还需要通过将焦点设置到 ListView 来跟进。

于 2015-04-17T17:35:44.563 回答
0

默认情况下,如果标签的文本值单独存在于整个表单中,JAWS 永远不会读取它。但总的来说,这不是一种常见的情况。因此,如果您在表单上还有其他控件,例如复选框、选项按钮、文本框等(以及标签),可以从属性窗口设置 tabStop 属性,那么此解决方案将起作用。在窗体上添加一个组框,并将标签和任何其他控件焦点控件放置在组框内。将焦点控件的制表位属性设置为 True。现在,当应用程序启动并且由于 tabStop 属性设置为 true 的制表符停止控件而导致焦点到达组框内时,JAWS 将读取标签的文本。

在 JAWS 中还有另一个虚拟化窗口的概念,需要一些脚本,但它很少使用,而且它不是最终用户可以轻松使用的事实和标准方式。

编辑 1:其他选项是使用文本框而不是标签。文本框是可聚焦的控件。现在明显的问题是文本框看起来如何像标签。设置以下两个属性来实现这一点:

  1. 只读 = 真
  2. 边框样式 = 无

编辑 2:您还可以想到一个工具提示。可以启用 JAWS 中的设置来读取控件的工具提示。因此,如果有一对标签和文本框控件代表某个字段,那么您可以将工具提示添加到 JAWS 可以读取的文本框中。

于 2016-05-10T10:02:20.107 回答
0

我发现的最简单的方法是将样式设置为可选并将制表位设置为 true。

/// <summary>
/// Label which can receive focus on tab. Used to communicate text to a screen reader.
/// </summary>
public class AccessibleLabel : Label
{
    public AccessibleLabel()
    {
        SetStyle(ControlStyles.Selectable, true);
        TabStop = true;
    }
}
于 2020-06-03T15:30:57.290 回答