Demonstra Passo a passo: Criando um aplicativo baseado no Windows acessível
Criar um aplicativo acessível tem implicações importantes nos negócios.Muitos órgãos governamentais tem regulamentos de acessibilidade para compra de software.O certificado para o logotipo do Windows inclui requisitos de acessibilidade.Um moradores de 30 milhões estimado dos EUA.sozinho, muitas delas possíveis clientes, são afetados pela acessibilidade de software.
Esta explicação passo a passo abordará os cinco requisitos de acessibilidade para o certificado para o logotipo do Windows.De acordo com a esses requisitos, um aplicativo acessível:
Oferece suporte a configurações de tamanho, cor, fonte e entrada através do Painel de controle.A barra de menus, barra de título, bordas e barra de status se redimensionarão quando o usuário altera as configurações no Painel de controle.Nenhuma alteração adicionais aos controles ou código é necessária neste aplicativo.
Oferece suporte ao modo de alto contraste.
Fornecer acesso documentado via teclado a todos os recursos.
Exibe o local do foco do teclado visualmente e por meio de programação.
Evita transmitir informações importantes apenas através do som .
Para obter mais informações, consulte Recursos para Projetando aplicativos acessíveis, a página da Web do MSDN Online Certified for Windows Program (https://msdn.microsoft.com/certification/default.asp) e a página da Web de Especificações de Aplicativo Projetadas para Windows XP (https://go.microsoft.com/fwlink/?LinkId=9775).
Para obter informações sobre suporte a diferentes layouts de teclado, consulte Best Practices for Developing World-Pronto Applications.
Criando o projeto
Essa explicação passo a passo cria a interface do usuário para um aplicativo que recolhe pedidos de pizza.Ele consiste em um TextBox para o nome do cliente, um grupo RadioButton para selecionar o tamanho da pizza, um CheckedListBox para selecionar os ingredientes, e dois controles botão rotulados Pedir e Cancelar e um menu com um comando Sair.
O usuário insere o nome do cliente, o tamanho de pizza, e os ingredientes desejados.Quando o usuário clica no botão Pedir, um resumo do pedido e o custo são exibidos em uma caixa de mensagem e os controles são limpos e pronto para o próximo pedido.Quando o usuário clica no botão ' Cancelar ', os controles são limpos e preparados para o próximo pedido.Quando o usuário clica no item de menu Sair, o programa fecha.
A ênfase dessa explicação passo a passo não é o código para um sistema de pedidos de varejo, mas a acessibilidade da interface do usuário.A explicação passo a passo demonstra os recursos de acessibilidade de diversos controles usados frequentemente, incluindo botões, botões, caixas de texto e rótulos.
Para começar a fazer o aplicativo
- Criar um novo Aplicativo do Windows no Visual Basic, Visual C#, ou Visual J#.Nomeie o projeto PizzaOrder.(Para obter detalhes consulte Criando Novas Soluções e Projetos.)
Adicionando controles ao formulário
Ao adicionar controles a um formulário, tenha em mente as seguintes diretrizes para tornar um aplicativo acessível:
Definir as propriedades AccessibleDescription e AccessibleName.Neste exemplo, a configuração padrão para o AccessibleRole é suficiente.Para obter mais informações sobre as propriedades de acessibilidade, consulte Fornecendo informações sobre acessibilidade para controles em um Formulário do Windows.
Defina o tamanho da fonte a 10 pontos ou mais.
Observação: Se você definir a tamanho da fonte do formulário como 10 ao iniciar, todos os controles adicionados posteriormente para o formulário terá um tamanho da fonte de 10.
Certifique-se de que qualquer controle Label que descreve um controle TextBox imediatamente preceda o controle TextBox na ordem de tabulação.
Adicione uma tecla de acesso, usando o caractere "&", para a propriedade Text de qualquer controle por onde o usuário pode querer naveguar.
Adicione uma tecla de acesso, usando o caractere "&", para a propriedade Text do rótulo que precede um controle por onde o usuário pode querer naveguar.Definar a propriedade UseMnemonic do rótulo para true, para que o foco seja definido para o próximo controle na ordem de tabulação quando o usuário pressiona a tecla de acesso.
Adicionar teclas de acesso a todos os itens de menu.
Para tornar seu aplicativo do Windows acessível
Adicione controles ao formulário e defina as propriedades conforme descrito abaixo.Observe a imagem no final da tabela de um modelo de como organizar os controles no formulário.
Objeto
Propriedade
Valor
Form1
AccessibleDescription
Formulário de pedido
AccessibleName
Formulário de pedido
Font Size
10
Texto
Formulário de pedido de pizza
PictureBox
Nome
Logotipo
AccessibleDescription
Uma fatia de pizza
AccessibleName
Logotipo da empresa
Image
Qualquer ícone ou bitmap
Rótulo
Nome
companyLabel
Texto
Pizza Boa
TabIndex
1
AccessibleDescription
Nome da empresa
AccessibleName
Nome da empresa
Backcolor
Azul
Forecolor
Amarelo
Tamanho da Fonte
18
Rótulo
Nome
customerLabel
Texto
&Nome
TabIndex
2
AccessibleDescription
Rótulo Nome do cliente
AccessibleName
Rótulo Nome do cliente
UseMnemonic
True
TextBox
Nome
customerName
Texto
(Nenhum)
TabIndex
3
AccessibleDescription
Nome do Cliente
AccessibleName
Nome do Cliente
GroupBox
Nome
sizeOptions
AccessibleDescription
Opções de Tamanho de Pizza
AccessibleName
Opções de Tamanho de Pizza
Texto
Tamanho de Pizza
TabIndex
4
RadioButton
Nome
smallPizza
Texto
$6.00 &Pequena
Checked
True
TabIndex
0
AccessibleDescription
Pizza pequena
AccessibleName
Pizza pequena
RadioButton
Nome
largePizza
Texto
10,00 &Grande
TabIndex
1
AccessibleDescription
Pizza grande
AccessibleName
Pizza grande
Rótulo
Nome
toppingsLabel
Texto
&Ingredientes ($0.75 cada)
TabIndex
5
AccessibleDescription
Rótulo ingredientes
AccessibleName
Rótulo ingredientes
UseMnemonic
True
CheckedListBox
Nome
ingredientes
TabIndex
6
AccessibleDescription
Ingredientes disponíveis
AccessibleName
Ingredientes disponíveis
Itens
Pepperoni, Salsicha, Cogumelos
Button
Nome
order
Texto
P&edir
TabIndex
7
AccessibleDescription
Total do Pedido
AccessibleName
Total do Pedido
Button
Nome
Cancelar
Texto
&Cancelar
TabIndex
8
AccessibleDescription
Cancelar o pedido
AccessibleName
Cancelar o pedido
MainMenu
Nome
theMainMenu
MenuItem
Nome
fileCommands
Texto
&Arquivo
MenuItem
Nome
exitApp
Texto
&Sair
O formulário terá a aparência a seguir:
Suporte ao Modo de alto contraste
O Modo alto contraste é uma configuração de sistema do Windows que melhora a legibilidade usando cores contrastantes e tamanhos de fonte que são úteis para usuários com deficiências visuais.A propriedade SystemInformation.HighContrast é fornecida para determinar se o modo de alto contraste está definido.
Se SystemInformation.HighContrast for true, o aplicativo deve:
Exibir todos os elementos interface do usuário usando o esquema de cores do sistema
Transmitir por dicas visuais ou som quaisquer informações que estejam escondidas pelas cores.Por exemplo, se determinados itens de lista estão realçados usando uma fonte vermelha, você pode também adicionar negrito à fonte, para que o usuário tenha uma dica além das cores de que os itens estão realçados.
Omitir as imagens ou padrões por trás de texto
O aplicativo deve verificar a configuração de HighContrast quando o aplicativo é iniciado e responder ao evento UserPreferenceChanged do sistema.O evento UserPreferenceChanged é gerado sempre que o valor de HighContrast muda.
Em nosso aplicativo, o único elemento que não está usando as configurações do sistema para a cor é lblCompanyName.A classe SystemColors é usada para mudar as configurações de cor do rótulo para as cores do sistema selecionadas pelo usuário.
Para ativar o modo de alto contraste de uma maneira eficaz
Crie um método para definir as cores do rótulo para as cores do sistema.
' Visual Basic Private Sub SetColorScheme() If SystemInformation.HighContrast Then companyLabel.BackColor = SystemColors.Window companyLabel.ForeColor = SystemColors.WindowText Else companyLabel.BackColor = Color.Blue companyLabel.ForeColor = Color.Yellow End If End Sub // C# private void SetColorScheme() { if (SystemInformation.HighContrast) { companyLabel.BackColor = SystemColors.Window; companyLabel.ForeColor = SystemColors.WindowText; } else { companyLabel.BackColor = Color.Blue; companyLabel.ForeColor = Color.Yellow; } } // Visual J# private void SetColorScheme() { if (SystemInformation.get_HighContrast()) { companyLabel.set_BackColor(SystemColors.get_Window()); companyLabel.set_ForeColor(SystemColors.get_WindowText()); } else { companyLabel.set_BackColor(Color.get_Blue()); companyLabel.set_ForeColor(Color.get_Yellow()); } }
Chame o procedimento SetColorScheme no construtor de formulário (Public Sub New() no Visual Basic, public class Form1 no Visual C# e Public Form1 no Visual J#).Para acessar o construtor no Visual Basic, você precisará expandir a região rotulada como código gerado pelo Designer Windows Form .
' Visual Basic Public Sub New() MyBase.New() InitializeComponent() SetColorScheme() End Sub // C# public Form1() { InitializeComponent(); SetColorScheme(); } // Visual J# public Form1() { InitializeComponent(); SetColorScheme(); }
Crie um procedimento de evento, com a assinatura apropriada, para responder ao evento UserPreferenceChanged.
' Visual Basic Protected Sub UserPreferenceChanged(ByVal sender As Object, _ ByVal e As Microsoft.Win32.UserPreferenceChangedEventArgs) SetColorScheme() End Sub // C# public void UserPreferenceChanged(object sender, Microsoft.Win32.UserPreferenceChangedEventArgs e) { SetColorScheme(); } // Visual J# public void UserPreferenceChanged(Object sender, Microsoft.Win32.UserPreferenceChangedEventArgs e) { SetColorScheme(); }
Adicione código ao construtor o formulário, após a chamada a InitializeComponents, para ligar o procedimento de evento com o evento do sistema.Este método chama o procedimento SetColorScheme .
' Visual Basic Public Sub New() MyBase.New() InitializeComponent() SetColorScheme() AddHandler Microsoft.Win32.SystemEvents.UserPreferenceChanged, _ AddressOf Me.UserPreferenceChanged End Sub // C# public Form1() { InitializeComponent(); SetColorScheme(); Microsoft.Win32.SystemEvents.UserPreferenceChanged += new Microsoft.Win32.UserPreferenceChangedEventHandler( this.UserPreferenceChanged); } // Visual J# public Form1() { // // Required for Windows Form Designer support // InitializeComponent(); SetColorScheme(); Microsoft.Win32.SystemEvents.add_UserPreferenceChanged( new Microsoft.Win32.UserPreferenceChangedEventHandler(this.UserPreferenceChanged)); // // Add any constructor code after InitializeComponent call // }
Adicione código ao método Dispose do formulário, antes da chamada para o método Dispose da classe base, para liberar o evento quando o aplicativo for fechado.Para acessar o método Dispose no Visual Basic, você precisará expandir a região rotulada como código gerado pelo Windows Form Designer.
Observação: O código do evento do sistema executa um segmento separado do aplicativo principal.Se você não liberar o evento, o código que você ligou com o evento será executado mesmo depois que o programa for fechado.
' Visual Basic Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If RemoveHandler Microsoft.Win32.SystemEvents.UserPreferenceChanged, _ AddressOf Me.UserPreferenceChanged MyBase.Dispose(disposing) End Sub // C# protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } Microsoft.Win32.SystemEvents.UserPreferenceChanged -= new Microsoft.Win32.UserPreferenceChangedEventHandler( this.UserPreferenceChanged); base.Dispose( disposing ); } // Visual J# protected void Dispose(boolean disposing) { if (disposing) { if (components != null) { components.Dispose(); } } Microsoft.Win32.SystemEvents.remove_UserPreferenceChanged( new Microsoft.Win32.UserPreferenceChangedEventHandler( this.UserPreferenceChanged)); super.Dispose(disposing); }
Pressione F5 para executar o aplicativo.
Transmitindo Informações Importantes por Meios Além do Som
Neste aplicativo, nenhuma informação é transmitida apenas pelo som.Se você usar som no seu aplicativo, você deve fornecer as informações por algum outro meio também.
Para fornecer informações por alguns outros meios além do som
Faça a barra de título piscar usando a função da API do Windows FlashWindow.Para obter um exemplo de como chamar funções da API do Windows, consulte Passo-a-passo: Chamando as APIs do Windows.
Observação: O usuário pode ter o serviço Windows SoundSentry ativado, o que também fará com que a janela pisque quando os sons do sistema são executados pelo alto-falante interno do computador.
Exibir as informações importantes em uma janela não restrita (modal) de forma que o usuário possa responder a elas.Para obter detalhes, consulte Exibindo janelas restritas e não restritas em Formulários do Windows.
Exiba uma caixa de mensagem que obtém o foco do teclado.Evite esse método quando o usuário estiver digitando.
Exibir um indicador de status na área de notificação de status da barra de tarefas.Para obter detalhes, consulte Adicionando ícones do aplicativo à barra de tarefas com o componente dos Formulários do Windows NotifyIcon.
Testando o aplicativo
Antes de implantar o aplicativo, você deve testar os recursos de acessibilidade que você implementou.
Para testar os recursos de acessibilidade
Para testar o acesso do teclado, desconecte o mouse e navege na interface do usuário para cada recurso usando apenas o teclado.Certifique-se que todas as tarefas podem ser executadas usando apenas o teclado.
Para testar o suporte ao alto contraste, escolha o ícone Opções de acessibilidade no Painel de controle.Clique na guia Vídeo (Display) e selecione a caixa de seleção Usar alto contraste (Use High Constrast).Navege por todos os elementos da interface do usuário para garantir que as alterações de cores e fontes se refletiram.Além disso, certifique-se de que imagens ou padrões que são desenhados por atrás do texto sejam omitidos.
Observação: O Windows NT 4 não tem um ícone Opções de acessibilidade no Painel de controle.Portanto, este procedimento para alterar a configuração SystemInformation.HighContrast não funciona no Windows NT 4.
Outras ferramentas estão prontamente disponíveis para testar a acessibilidade de um aplicativo.
Para testar a exposição do foco do teclado, execute a Lente de aumento.(Para abri-la, clique no menu Iniciar, aponte para Programas, aponte para Acessórios, aponte para Acessibilidade e em seguida, clique em Lente de aumento ).Navegue na interface do usuário usando tabulações do teclado e mouse.Garanta que toda a navegação é rastreada adequadamente na Lente de aumento .
Para testar a exibição de elementos da tela, execute Inspect e use tanto o mouse quanto a tecla TAB para acessar cada elemento.Certifique-se de que as informações apresentadas nos campos Nome, Estado, Função, Local e do Valor da janela Inspecionar têm significado para o usuário em todos os objetos da interface do usuário.Inspecionar é instalado como parte do Microsoft ® Active Accessibility ® SDK, que está disponível em https://msdn.microsoft.com/library/default.asp?url=/downloads/list/Accessibility.asp.