Compartilhar via


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

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

  1. 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());
       }
    }
    
  2. 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();
    }
    
  3. 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();
    }
    
  4. 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
       //
    }
    
  5. 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);
       }
    
  6. 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

  1. 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.

  2. 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.

  3. Exiba uma caixa de mensagem que obtém o foco do teclado.Evite esse método quando o usuário estiver digitando.

  4. 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

  1. 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.

  2. 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.

  3. Outras ferramentas estão prontamente disponíveis para testar a acessibilidade de um aplicativo.

  4. 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 .

  5. 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.