我有一个从Control类派生的自定义列表控件。
我需要通过MSAA (Microsoft Active Accessibility)让残障人士可以访问它。
到目前为止,我知道我需要创建从ControlAccessibleObject继承的类,然后在Control.CreateAccessibilityInstance方法覆盖中返回其实例。
问题是我已经实现了这个,它似乎不适用于 Windows 讲述人工具。
例如,当我单击标准 ListView 中的某个项目时,讲述人会说出所选项目的文本。
但是当我单击控件中的项目时,什么也没有发生(尽管在我的ControlAccessibleObject实现中请求了项目文本)
我以为我也需要实现IAccessible,但是我查看了 .NET refrence 源代码,而 ListView 没有实现这个接口。我想这可能是在包装的 Win32 控件中实现的,所以我看了一下类似的控件——DataGridView——但这也没有实现 IAccessible。
DataGridView 有辅助功能支持,但是虽然我复制了 DataGridViewAccessibleObject 的所有重要代码,但它在我的控件中仍然不起作用。
是否有人对 WinForms 中的自定义控件可访问性有更多经验?