gpt4 book ai didi

winforms - 使自定义 WinForms 控件与讲述人一起使用(辅助功能)

转载 作者:行者123 更新时间:2023-12-01 14:14:35 25 4
gpt4 key购买 nike

我有一个源自 的自定义列表控件控制类(class)。

我需要通过 MSAA (Microsoft Active Accessibility) 让残障人士可以使用它.

到目前为止,我知道我需要创建继承自 的类控制可访问对象 然后在 中返回它的实例Control.CreateAccessibilityInstance 方法覆盖。

问题是我已经实现了这个,它似乎不适用于 Windows 讲述人工具。

例如,当我单击标准 ListView 中的某个项目时,讲述人会说出所选项目的文本。

但是当我单击控件中的项目时,什么也没有发生(尽管在我的 ControlAccessibleObject 实现中请求了项目文本)

我以为我需要实现 易通也是,但我查看了 .NET 引用源代码,而 ListView 没有实现这个接口(interface)。我想这可能是在包装的 Win32 控件中实现的,所以我看了一下类似的控件——DataGridView——但这也没有实现 IAccessible。

DataGridView 有辅助功能支持,但是虽然我复制了 DataGridViewAccessibleObject 的所有重要代码,但它在我的控件中仍然不起作用。

是否有人对 WinForms 中的自定义控件可访问性有更多经验?

最佳答案

好的,我找到了: Control.AccessibilityNotifyClients 方法很神奇。必须在派生控件中重写此方法。

但是,为了让屏幕阅读器朗读文本,我不得不调用:

AccessibilityNotifyClients(AccessibleEvents.Focus, index);
AccessibilityNotifyClients(AccessibleEvents.Selection, index);

这里是 索引 是新选择项目的索引。

我在 CheckedListBox 的 .NET 引用源中找到了这段代码。当我单独使用 Focus 或 Selection 事件时,屏幕阅读器没有反应。口语文本也取决于 可访问对象 对应于新选择的项目的状态。

关于winforms - 使自定义 WinForms 控件与讲述人一起使用(辅助功能),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10865961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com