为视障者打造无障碍的 WinForms 应用程序

发布时间 2023-05-27 08:01:58作者: 张赐荣

如何在Windows Forms 应用程序中改善屏幕阅读器可访问性

屏幕阅读器是一种辅助技术,可以通过语音或者盲文显示器来读出屏幕上的内容,帮助视力障碍者使用计算机。Windows Forms 是一种基于.NET Framework 的桌面应用程序开发技术,提供了丰富的控件和组件,以及一些可访问性功能,可以让开发者创建更适合屏幕阅读器用户的应用程序。本文将介绍如何在Windows Forms 应用程序中改善屏幕阅读器可访问性,以及如何使用NVDA(NonVisual Desktop Access)这款免费的屏幕阅读器软件进行测试。

设计可访问的Windows Forms 应用程序

要设计一个可访问的Windows Forms 应用程序,需要考虑以下几个方面:

  • 提供足够的对比度和清晰的视觉提示。屏幕阅读器用户可能会有不同程度的视力残留,因此应该使用高对比度的颜色方案,避免使用纯色或者渐变色作为背景。同时,应该为重要的元素(如按钮、链接、表单字段等)提供明显的视觉提示,例如边框、下划线、图标等,以便用户能够轻松地找到。
  • 使用合适的控件和布局。Windows Forms 提供了多种控件和布局方式,可以帮助开发者创建符合用户期望和习惯的界面。例如,使用Label 控件来描述TextBox 控件的作用,并且让Label 控件在Tab 顺序中紧跟TextBox 控件;使用GroupBox 或者Panel 控件来对相关的控件进行分组和区分;使用TableLayoutPanel 或者FlowLayoutPanel 控件来实现自适应的布局等。
  • 设置可访问性属性和事件。Windows Forms 的控件都继承了AccessibleObject 类,这个类提供了一些属性和事件,可以让开发者为控件提供更多的可访问性信息,以便屏幕阅读器能够正确地识别和读出它们。例如,设置AccessibleName 属性来为控件提供一个简短而有意义的名称;设置AccessibleDescription 属性来为控件提供一个更详细的描述;设置AccessibleRole 属性来为控件指定一个角色(如按钮、链接、列表框等);设置AccessibleDefaultActionDescription 属性来为控件指定一个默认的操作描述(如点击、选择、输入等);触发AccessibleEvents 事件来通知屏幕阅读器控件状态的变化(如选中、展开、聚焦等)。
  • 支持键盘操作和导航。屏幕阅读器用户通常会使用键盘而不是鼠标来操作计算机,因此开发者应该确保Windows Forms 应用程序支持完整的键盘操作和导航。例如,使用Tab 键和Shift + Tab 键来在不同的控件之间切换焦点;使用Enter 键或者空格键来激活按钮或者链接;使用方向键或者Page Up / Page Down 键来在列表框或者表格中移动;使用Alt + 字母键来快速定位到具有助记符(&)的控件;使用Esc 键来关闭对话框或者取消操作等。

使用NVDA进行测试

NVDA 是一款免费、开源、易用的屏幕阅读器软件,它可以与多种浏览器和应用程序配合使用,包括Windows Forms 应用程序。使用NVDA进行测试可以帮助开发者发现并改进Windows Forms 应用程序中存在的可访问性问题。以下是一些使用NVDA进行测试的基本步骤:

  • 下载并安装NVDA。NVDA 可以从NVDA 官方网站下载并安装到Windows 计算机上。安装过程中可以选择语言、语音引擎、语速等选项。
  • 启动并配置NVDA。安装成功后,可以按快捷键Ctrl+Alt+N启动NVDA读屏软件。启动NVDA后,可以按下NVDA 键(默认是Insert 键或者Caps Lock 键)+ N 键来打开NVDA 菜单,在菜单中可以进入首选项->设置来调整NVDA 的各项参数,例如语音、键盘、鼠标、对象呈现等。
  • 打开并运行Windows Forms 应用程序。打开并运行要测试的Windows Forms 应用程序,在应用程序界面上按下NVDA 键+ B 键来开始连续阅读所有内容。注意听NVDA 是否能够正确地读出控件的名称、描述、角色、状态等信息,以及是否能够按照预期的顺序进行阅读。
  • 使用键盘操作和导航Windows Forms 应用程序。在应用程序界面上使用键盘进行操作和导航,例如使用Tab 键和Shift + Tab 键在不同的控件之间切换焦点;使用Enter 键或者空格键激活按钮或者链接;使用方向键或者Page Up / Page Down 键在列表框或者表格中移动;使用Alt + 字母键快速定位到具有助记符(&)的控件;使用Esc 键关闭对话框或者取消操作等。注意听NVDA 是否能够及时地反馈当前焦点所在的控件以及其相关信息,以及是否能够正确地执行各种操作。
  • 记录并修复发现的可访问性问题。在测试过程中,如果发现了任何影响屏幕阅读器用户体验的可访问性问题,应该及时地记录并修复它们。例如,如果发现某个控件没有设置合适的AccessibleName 属性或者没有添加相应的Label 控件来描述它,就应该补充这些信息;如果发现某个控件没有触发相应的AccessibleEvents 事件来通知屏幕阅读器状态变化,就应该添加这些事件;如果发现某个控件无法通过键盘操作或者导航到达,就应该调整其Tab 顺序或者添加助记符等。

总结

本文介绍了如何在Windows Forms 应用程序中改善屏幕阅读器可访问性,以及如何使用NVDA 这款免费的屏幕阅读器软件进行测试。希望本文能够对想要创建更友好和包容的Windows Forms 应用程序的开发者有所帮助。