C# 无障碍:编写所有人都能使用的代码

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

C# 中的无障碍:为什么它很重要以及如何开始?



想象一下,您用 C# 创建了一个令人惊叹的应用程序。漂亮的界面、闪电般的速度、深思熟虑的架构。但每十个潜在用户中就有一个甚至无法点击“发送”按钮。为什么?因为他使用的是屏幕朗读器,而您的按钮没有文本标签。或者因为他手部颤抖,无法精确地将光标悬停在微小的控件元素上。



C# 开发中的无障碍不仅仅是一种时尚潮流,也不是为了报告而打勾。这是对数百万残障人士的责任,更重要的是,它扩大了您的用户群。在本文中,我们将使用现代实践、代码示例和测试工具,探讨如何让您的 C# 应用程序真正可访问。



可访问性的法律和道德方面



在深入代码之前,让我们先了解为什么 C# 中的无障碍不是可选项,而是必需品。许多国家都有法律要求软件具有可访问性。例如,在美国有 Section 508 和 ADA(美国残疾人法案),在欧洲有 EN 301 549。在俄罗斯,包容性趋势也在增长,尤其是在政府和教育项目中。



但即使您为私人公司编写商业应用程序,请记住:可访问性 = 更多客户。根据世界卫生组织的数据,全球约 15% 的人口患有某种形式的残疾。忽视这样的受众意味着自愿放弃利润。



C# 开发者的 WCAG 基本原则



国际标准 WCAG(Web 内容无障碍指南) 最初是为网络创建的,但其原则同样适用于 C# 桌面应用程序。有四个主要原则(POUR):



  • Perceivable(可感知) — 信息必须以用户能够感知的方式呈现(例如,通过屏幕朗读器)。
  • Operable(可操作) — 界面可以通过不同方式操作(键盘、语音、开关)。
  • Understandable(可理解) — 界面可预测且不会引起混淆。
  • Robust(健壮) — 代码正确,并能与各种辅助技术配合使用。


接下来,我们将讨论如何在 C# 中实现这些原则。



实用示例:从 WinForms 到 WPF 和 MAUI



让我们看看三种流行的 C# 框架:WinForms、WPF 和 .NET MAUI。每个框架都有自己确保可访问性的机制。



1. WinForms:基本可访问性级别



WinForms 是一个古老但仍然活跃的框架。不幸的是,许多开发者忘记了可访问性。以下是如何修复它:



// 示例:使按钮对屏幕朗读器可访问Button saveButton = new Button();saveButton.Text = "保存"; // 重要!按钮上的文本saveButton.Name = "btnSave";   // 用于自动化的名称saveButton.AccessibleName = "保存文件"; // 屏幕朗读器的描述saveButton.AccessibleDescription = "点击以保存当前文档";saveButton.AccessibleRole = AccessibleRole.PushButton; // 明确指定角色

// 键盘导航(默认有效,但请检查)saveButton.TabIndex = 0;saveButton.UseVisualStyleBackColor = true;


重要提示:始终设置 AccessibleName 和 AccessibleRole。这对于屏幕阅读软件(NVDA、JAWS)至关重要。



2. WPF:通过 AutomationProperties 实现自动化



WPF(Windows Presentation Foundation)提供了更强大的可访问性工具。在这里,您可以使用附加属性

博客

书籍推荐