Condividi tramite


Procedura dettagliata: Creazione di un'applicazione basata su Windows accessibile

La creazione di un'applicazione accessibile ha implicazioni aziendali importanti. Molti governi hanno normative di accessibilità per l'acquisto di software. Il logo Certificato per Windows include i requisiti di accessibilità. Circa 30 milioni di residenti negli Stati Uniti, molti dei quali potenziali clienti, sono influenzati dall'accessibilità del software.

Questa procedura dettagliata affronterà i cinque requisiti di accessibilità per il logo Certified for Windows. In base a questi requisiti, un'applicazione accessibile:

  • Supportare le dimensioni, il colore, il tipo di carattere e le impostazioni di input del Pannello di controllo. La barra dei menu, la barra del titolo, i bordi e la barra di stato verranno ridimensionati tutti quando l'utente modifica le impostazioni del pannello di controllo. In questa applicazione non sono necessarie modifiche aggiuntive ai controlli o al codice.

  • Supporta la modalità contrasto elevato.

  • Fornire l'accesso documentato alla tastiera a tutte le funzionalità.

  • Esponi la posizione del fuoco della tastiera visivamente e programmaticamente.

  • Evitare di trasmettere informazioni importanti solo tramite il suono.

Per ulteriori informazioni, vedere Risorse per la progettazione di applicazioni accessibili.

Per informazioni sul supporto di layout di tastiera differenti, vedere Best Practices for Developing World-Ready Applications.

Creazione del progetto

Questa procedura dettagliata crea l'interfaccia utente per un'applicazione che accetta gli ordini di pizza. È costituito da un TextBox per il nome del cliente, un gruppo di RadioButton per selezionare le dimensioni della pizza, un CheckedListBox per selezionare i condimenti, due controlli Pulsante etichettati Ordine e Annulla e un menu con un comando Exit.

L'utente immette il nome del cliente, le dimensioni della pizza e i condimenti desiderati. Quando l'utente fa clic sul pulsante Ordine, viene visualizzato un riepilogo dell'ordine con il relativo costo in una finestra di messaggio, e i controlli vengono cancellati, pronti per l'ordine successivo. Quando l'utente fa clic sul pulsante Annulla, i controlli vengono cancellati e pronti per l'ordine successivo. Quando l'utente fa clic sulla voce di menu Esci, il programma viene chiuso.

L'enfasi di questa procedura dettagliata non è il codice per un sistema di ordini al dettaglio, ma l'accessibilità dell'interfaccia utente. La procedura dettagliata illustra le funzionalità di accessibilità di diversi controlli usati di frequente, inclusi pulsanti, pulsanti di opzione, caselle di testo ed etichette.

Per iniziare a creare l'applicazione

Aggiunta dei controlli al modulo

Quando si aggiungono i controlli a un modulo, tenere presenti le linee guida seguenti per rendere un'applicazione accessibile:

  • Impostare le proprietà AccessibleDescription e AccessibleName. In questo esempio l'impostazione Predefinita per il AccessibleRole è sufficiente. Per ulteriori informazioni sulle proprietà di accessibilità, consultare Fornire informazioni sull'accessibilità per i controlli in un Windows Form.

  • Impostare le dimensioni del carattere su 10 punti o superiori.

    Nota

    Se si imposta la dimensione del carattere del modulo su 10 all'avvio, tutti i controlli aggiunti successivamente al modulo avranno una dimensione del carattere pari a 10.

  • Assicurati che qualsiasi controllo Label che descrive un controllo TextBox preceda immediatamente il controllo TextBox nell'ordine di tabulazione.

  • Aggiungere un tasto di scelta usando il carattere "&" alla proprietà Text di qualsiasi controllo a cui l'utente può voler passare.

  • Aggiungere un tasto di accesso, usando il carattere "&", alla proprietà Text dell'etichetta che precede un controllo a cui l'utente potrebbe voler navigare. Impostare la proprietà UseMnemonic delle etichette su true, in modo che lo stato attivo venga impostato sul controllo successivo nell'ordine di tabulazione quando l'utente preme il tasto di accesso rapido.

  • Aggiungere i tasti di scelta rapida a tutte le voci di menu.

Per rendere accessibile l'applicazione Windows

  • Aggiungere i controlli al modulo e impostare le proprietà come descritto di seguito. Vedere l'immagine alla fine della tabella per un modello di come disporre i controlli nel form.

    Oggetto Proprietà Valore
    Form1 DescrizioneAccessibile Modulo di ordine
    NomeAccessibile Modulo di ordine
    Dimensioni carattere 10
    Testo Modulo d'ordine della pizza
    PictureBox Nome logo
    DescrizioneAccessibile Una fetta di pizza
    NomeAccessibile Logo aziendale
    Immagine Qualsiasi icona o bitmap
    Etichetta Nome etichettaAziendale
    Testo Buona pizza
    TabIndex 1
    DescrizioneAccessibile Nome società
    Nome accessibile Nome società
    Colore di sfondo Blu
    Forecolor Giallo
    Dimensione del carattere 18
    Etichetta Nome customerLabel
    Testo &nome
    TabIndex 2
    DescrizioneAccessibile Etichetta del nome del cliente
    Nome accessibile Etichetta del nome del cliente
    UsaMnemonico Vero
    Casella di testo Nome nomeCliente
    Testo (nessuno)
    TabIndex 3
    DescrizioneAccessibile Nome cliente
    Nome accessibile Nome cliente
    GroupBox Nome opzioni di dimensione
    DescrizioneAccessibile Opzioni per le dimensioni della pizza
    NomeAccessibile Opzioni per le dimensioni della pizza
    Testo Dimensioni pizza
    TabIndex 4
    RadioButton Nome smallPizza
    Testo &Piccolo €6,00
    Controllato Vero
    TabIndex 0
    DescrizioneAccessibile Pizza piccola
    NomeAccessibile Pizza piccola
    RadioButton Nome largePizza
    Testo &grande $ 10,00
    TabIndex 1
    Descrizione Accessibile Pizza grande
    NomeAccessibile Pizza grande
    Etichetta Nome toppingsLabel
    Testo &Toppings ($ 0,75 ciascuno)
    TabIndex 5
    Descrizione Accessibile Etichetta condimento
    NomeAccessibile Etichetta condimenti
    UtilizzaMnemonic Vero
    CheckedListBox (elenco con caselle di controllo) Nome Condimenti
    TabIndex 6
    DescrizioneAccessibile Condimenti disponibili
    NomeAccessibile Condimenti disponibili
    Elementi Pepperoni, Salsiccia, Funghi
    Pulsante Nome ordine
    Testo Ordine &
    TabIndex (indice di tabulazione) 7
    DescrizioneAccessibile Totalizza l'ordine
    NomeAccessibile Ordine totale
    Pulsante Nome Annulla
    Testo &Annulla
    TabIndex 8
    Descrizione Accessibile Annullare l'ordine
    NomeAccessibile Annullare l'ordine
    Menu Principale Nome theMainMenu
    Voce di menu Nome fileCommands
    Testo &File
    MenuItem Nome exitApp
    Testo E&exit

    Il modulo avrà un aspetto simile all'immagine seguente:

    Modulo dell'ordine della pizza con una casella di testo nome, dimensioni e condimenti selezionati.

Supporto della modalità a contrasto elevato

La modalità contrasto elevato è un'impostazione di sistema di Windows che migliora la leggibilità usando colori e dimensioni dei caratteri a contrasto che sono utili per gli utenti con problemi di vista. La proprietà HighContrast viene fornita per determinare se è impostata la modalità contrasto elevato.

Se SystemInformation.HighContrast è true, l'applicazione deve:

  • Visualizzare tutti gli elementi dell'interfaccia utente usando la combinazione di colori di sistema

  • Trasmettere da segnali visivi o suoni qualsiasi informazione che viene trasmessa attraverso il colore. Ad esempio, se determinati elementi elenco vengono evidenziati utilizzando un tipo di carattere rosso, è anche possibile aggiungere il grassetto al tipo di carattere, in modo che l'utente abbia un segnale non di colore che gli elementi siano evidenziati.

  • Omettere immagini o modelli dietro il testo

L'applicazione deve controllare l'impostazione di HighContrast all'avvio dell'applicazione e rispondere all'evento di sistema UserPreferenceChanged. L'evento UserPreferenceChanged viene generato ogni volta che viene modificato il valore di HighContrast.

Nell'applicazione l'unico elemento che non usa le impostazioni di sistema per il colore è lblCompanyName. La classe SystemColors viene usata per modificare le impostazioni dei colori dell'etichetta impostando i colori di sistema selezionati dall'utente.

Per abilitare la modalità contrasto elevato in modo efficace

  1. Creare un metodo per impostare i colori dell'etichetta sui colori di sistema.

    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
    
    private void SetColorScheme()
    {
        if (SystemInformation.HighContrast)
        {
            companyLabel.BackColor = SystemColors.Window;
            companyLabel.ForeColor = SystemColors.WindowText;
        }
        else
        {
            companyLabel.BackColor = Color.Blue;
            companyLabel.ForeColor = Color.Yellow;
        }
    }
    
  2. Chiamare la procedura SetColorScheme nel costruttore del modulo (Public Sub New() in Visual Basic e public Form1() in Visual C#). Per accedere al costruttore in Visual Basic, è necessario espandere l'area contrassegnata da codice generato da Progettazione di Windows Form.

    Public Sub New()
        MyBase.New()
        InitializeComponent()
        SetColorScheme()
    End Sub
    
    public Form1()
    {
        InitializeComponent();
        SetColorScheme();
    }
    
  3. Creare una procedura evento con la firma appropriata per rispondere all'evento UserPreferenceChanged.

    Protected Sub UserPreferenceChanged(sender As Object, _
    e As Microsoft.Win32.UserPreferenceChangedEventArgs)
        SetColorScheme()
    End Sub
    
    public void UserPreferenceChanged(object sender,
    Microsoft.Win32.UserPreferenceChangedEventArgs e)
    {
        SetColorScheme();
    }
    
  4. Aggiungere codice al costruttore del modulo, dopo la chiamata a InitializeComponents, per collegare la procedura evento all'evento di sistema. Questo metodo chiama la routine SetColorScheme.

    Public Sub New()
        MyBase.New()
        InitializeComponent()
        SetColorScheme()
        AddHandler Microsoft.Win32.SystemEvents.UserPreferenceChanged, _
           AddressOf Me.UserPreferenceChanged
    End Sub
    
    public Form1()
    {
        InitializeComponent();
        SetColorScheme();
        Microsoft.Win32.SystemEvents.UserPreferenceChanged
           += new Microsoft.Win32.UserPreferenceChangedEventHandler(
           this.UserPreferenceChanged);
    }
    
  5. Aggiungere codice al metodo del modulo Dispose, prima della chiamata al metodo Dispose della classe di base, per rilasciare l'evento quando l'applicazione si chiude. Per accedere al metodo Dispose in Visual Basic, è necessario espandere la regione denominata Codice generato dal progettista di Windows Forms.

    Nota

    Il codice evento di sistema esegue un thread separato dall'applicazione principale. Se non si rilascia l'evento, il codice associato all'evento verrà eseguito anche dopo la chiusura del programma.

    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing AndAlso components IsNot Nothing Then
            components.Dispose()
        End If
        RemoveHandler Microsoft.Win32.SystemEvents.UserPreferenceChanged, _
           AddressOf Me.UserPreferenceChanged
        MyBase.Dispose(disposing)
    End Sub
    
    protected override void Dispose(bool disposing)
    {
        if(disposing && components != null)
        {
            components.Dispose();
        }
        Microsoft.Win32.SystemEvents.UserPreferenceChanged
           -= new Microsoft.Win32.UserPreferenceChangedEventHandler(
           this.UserPreferenceChanged);
        base.Dispose( disposing );
    }
    
  6. Premere F5 per eseguire l'applicazione.

Comunicazione di informazioni importanti per mezzo di suoni diversi dal suono

In questa applicazione, nessuna informazione viene trasmessa solo dal suono. Se si usa il suono nell'applicazione, è necessario fornire anche le informazioni con altri mezzi.

Fornire informazioni con mezzi diversi dal suono

  1. Fare lampeggiare la barra del titolo usando la funzione DELL'API Windows FlashWindow. Per un esempio di come chiamare le API di Windows, vedere Guida dettagliata: Chiamata delle API di Windows.

    Nota

    L'utente potrebbe avere abilitato il servizio Windows SoundSentry, che causerà anche il flashing della finestra quando i suoni di sistema vengono riprodotti tramite l'altoparlante predefinito del computer.

  2. Visualizzare le informazioni importanti in una finestra non modale in modo che l'utente possa rispondere.

  3. Visualizza una finestra di messaggio che acquisisce lo stato attivo della tastiera. Evitare questo metodo quando l'utente potrebbe digitare.

  4. Visualizzare un indicatore di stato nell'area di notifica dello stato della barra delle applicazioni. Per informazioni dettagliate, vedere Aggiunta di icone dell'applicazione alla barra delle applicazioni con il componente NotifyIcon di Windows Forms.

Test dell'applicazione

Prima di distribuire l'applicazione, è necessario testare le funzionalità di accessibilità implementate.

Per testare le funzionalità di accessibilità

  1. Per testare l'accesso tramite tastiera, scollegare il mouse e spostarsi nell'interfaccia utente per ogni funzionalità usando solo la tastiera. Assicurarsi che tutte le attività possano essere eseguite solo usando la tastiera.

  2. Per testare il supporto di contrasto elevato, scegliere l'icona Opzioni di accessibilità nel Pannello di controllo. Fare clic sulla scheda Visualizza e selezionare la casella di controllo Usa contrasto elevato. Spostarsi tra tutti gli elementi dell'interfaccia utente per assicurarsi che le modifiche di colore e carattere vengano riflesse. Assicurarsi inoltre che le immagini o i modelli disegnati dietro il testo vengano omessi.

    Nota

    Windows NT 4 non dispone di un'icona Opzioni di accessibilità nel Pannello di controllo. Pertanto, questa procedura per modificare l'impostazione SystemInformation.HighContrast non funziona in Windows NT 4.

  3. Altri strumenti sono facilmente disponibili per testare l'accessibilità di un'applicazione.

  4. Per testare l'esposizione dello stato attivo della tastiera, eseguire Magnifier. Per aprirlo, fare clic sul menu Start, puntare su Programmi, puntare su Accessori, puntare su Accessibilitàe quindi fare clic su Lente di ingrandimento). Spostarsi nell'interfaccia utente utilizzando i tasti della tastiera e il mouse. Assicurarsi che tutta la navigazione sia monitorata correttamente in Lente di ingrandimento.

  5. Per testare l'esposizione degli elementi dello schermo, eseguire Inspect e usare sia il mouse che il tasto TAB per raggiungere ogni elemento. Assicurarsi che le informazioni presentate nei campi Nome, Stato, Ruolo, Posizione e Valore della finestra Inspect siano significative per l'utente per ogni oggetto nell'interfaccia utente.