Procedura dettagliata: creazione di un'applicazione Windows ad Accesso facilitato

La creazione di applicazioni ad Accesso facilitato riveste un'importanza fondamentale per le aziende. Molti governi applicano normative sull'Accesso facilitato per la regolamentazione dell'acquisto di applicazioni software. Per potersi avvalere del logo Certified for Windows è inoltre necessario soddisfare anche requisiti di Accesso facilitato. Si stima che 30 milioni di residenti solo negli Stati Uniti, molti dei quali sono possibili clienti, siano interessati dall'accessibilità del software.

In questa sezione vengono illustrati i cinque requisiti di Accesso facilitato che è necessario soddisfare per ottenere il logo Certified for Windows. In base a tali requisiti, è necessario che un'applicazione ad Accesso facilitato presenti le seguenti caratteristiche:

  • Supporti le impostazioni relative a input, caratteri, colori e dimensioni del Pannello di controllo. La barra dei menu, la barra del titolo, i bordi e la barra di stato vengono ridimensionati automaticamente quando l'utente modifica le relative impostazioni nel Pannello di controllo. In questa applicazione non è necessario apportare modifiche aggiuntive ai controlli o al codice.

  • Supporti la modalità Contrasto elevato.

  • Consenta l'accesso da tastiera documentato a tutte le funzionalità.

  • Esponga la posizione dello stato attivo graficamente e a livello di codice.

  • Non utilizzi unicamente i segnali acustici per comunicare informazioni importanti.

Per ulteriori informazioni, vedere Risorse per la progettazione di applicazioni accessibili, la pagina Web "MSDN Online Certified for Windows Program" (https://www.microsoft.com/italy/traincert/default.mspx) e la pagina Web "Designed for Windows XP Application Specification" (https://go.microsoft.com/fwlink/?linkid=9775).

Per informazioni sul supporto dei diversi layout di tastiera, vedere Suggerimenti per lo sviluppo di applicazioni internazionali.

Creazione del progetto

In questa sezione viene creata l'interfaccia utente per un'applicazione che registra gli ordini delle pizze. L'interfaccia è composta da una classe TextBox per il nome del cliente, un gruppo RadioButton per la selezione della dimensione della pizza, una classe CheckedListBox per la selezione degli ingredienti, due controlli Button etichettati Order e Cancel e un Menu con un comando Exit.

L'utente immette il nome del cliente, la dimensione della pizza e gli ingredienti desiderati. Quando si fa clic sul pulsante Order, in una finestra di messaggio viene visualizzato un riepilogo dell'ordine e il relativo costo. I controlli vengono quindi azzerati e sono pronti per l'ordine successivo. Quando si fa clic sul pulsante Cancel, i controlli vengono azzerati e sono pronti per l'ordine successivo. Quando si fa clic sulla voce di menu Exit, il programma viene chiuso.

In questa sezione l'enfasi viene posta non tanto sul codice per un sistema di ordini per la vendita al dettaglio, quanto sull'Accesso facilitato dell'interfaccia utente. Vengono infatti illustrate le funzionalità di Accesso facilitato dei controlli utilizzati più di frequente, quali pulsanti, pulsanti di opzione, caselle di testo ed etichette.

Per iniziare la creazione dell'applicazione

Aggiunta di controlli al form

Quando si aggiungono controlli a un form è necessario tenere presente le seguenti indicazioni per la creazione di un'applicazione ad Accesso facilitato.

  • Impostare le proprietà AccessibleDescription e AccessibleName. In questo esempio è sufficiente utilizzare l'impostazione predefinita per la proprietà AccessibleRole. Per ulteriori informazioni sulle proprietà di Accesso facilitato, vedere Aggiunta di informazioni per l'Accesso facilitato ai controlli in un Windows Form.

  • Impostare la dimensione del carattere su 10 punti o su un valore superiore.

    Nota

    Se all'avvio si imposta la dimensione del tipo di carattere del form su 10, tutti i caratteri dei controlli aggiunti successivamente al form avranno una dimensione pari a 10 punti.

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

  • Aggiungere un tasto di scelta, utilizzando il carattere "&", alla proprietà Text di ogni controllo accessibile dall'utente.

  • Aggiungere un tasto di scelta, utilizzando il carattere "&", alla proprietà Text dell'etichetta che precede il controllo accessibile dall'utente. 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 scelta.

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

Per rendere facilmente accessibile l'applicazione per Windows

  • Aggiungere i controlli al form e impostare le proprietà come illustrato di seguito. Per un modello relativo alla disposizione dei controlli nel form, vedere la figura riportata dopo la tabella.

    Oggetto

    Proprietà

    Valore

    Form1

    AccessibleDescription

    Order form

     

    AccessibleName

    Order form

     

    Font Size

    10

     

    Text

    Pizza Order Form

    PictureBox

    Name

    logo

     

    AccessibleDescription

    A slice of pizza

     

    AccessibleName

    Company logo

     

    Image

    Any icon or bitmap

    Etichetta

    Name

    companyLabel

     

    Text

    Good Pizza

     

    TabIndex

    1

     

    AccessibleDescription

    Company name

     

    AccessibleName

    Company name

     

    Backcolor

    Blu

     

    Forecolor

    Yellow

     

    FontSize

    18

    Etichetta

    Name

    customerLabel

     

    Text

    &Name

     

    TabIndex

    2

     

    AccessibleDescription

    Customer name label

     

    AccessibleName

    Customer name label

     

    UseMnemonic

    True

    TextBox

    Name

    customerName

     

    Text

    (nessuno)

     

    TabIndex

    3

     

    AccessibleDescription

    Customer name

     

    AccessibleName

    Customer name

    GroupBox

    Name

    sizeOptions

     

    AccessibleDescription

    Pizza size options

     

    AccessibleName

    Pizza size options

     

    Text

    Pizza size

     

    TabIndex

    4

    RadioButton

    Name

    smallPizza

     

    Text

    &Small $6.00

     

    Selezionato

    True

     

    TabIndex

    0

     

    AccessibleDescription

    Small pizza

     

    AccessibleName

    Small pizza

    RadioButton

    Name

    largePizza

     

    Text

    &Large $10.00

     

    TabIndex

    1

     

    AccessibleDescription

    Large pizza

     

    AccessibleName

    Large pizza

    Etichetta

    Name

    toppingsLabel

     

    Text

    &Toppings ($0.75 each)

     

    TabIndex

    5

     

    AccessibleDescription

    Toppings label

     

    AccessibleName

    Toppings label

     

    UseMnemonic

    True

    CheckedListBox

    Name

    toppings

     

    TabIndex

    6

     

    AccessibleDescription

    Available toppings

     

    AccessibleName

    Available toppings

     

    Items

    Pepperoni, Sausage, Mushrooms

    Button

    Name

    order

     

    Text

    &Order

     

    TabIndex

    7

     

    AccessibleDescription

    Total the order

     

    AccessibleName

    Total order

    Button

    Name

    cancel

     

    Text

    &Cancel

     

    TabIndex

    8

     

    AccessibleDescription

    Cancel the order

     

    AccessibleName

    Cancel order

    MainMenu

    Name

    theMainMenu

    MenuItem

    Name

    fileCommands

     

    Text

    &File

    MenuItem

    Name

    exitApp

     

    Text

    E&xit

    Il form risulterà simile al seguente:

    Pizza Order Form

Supporto della modalità Contrasto elevato

La modalità Contrasto elevato è un'impostazione di sistema di Windows che consente una migliore leggibilità mediante l'utilizzo di dimensioni di caratteri e di colori contrastanti che risultano utili per gli utenti con disturbi alla vista. La proprietà SystemInformation.HighContrast Property consente di verificare se è impostata la modalità Contrasto elevato.

Se SystemInformation.HighContrast è impostata su true, l'applicazione si comporta come illustrato di seguito:

  • Visualizza tutti gli elementi dell'interfaccia utente mediante la combinazione di colori di sistema.

  • Comunica tutte le informazioni fornite mediante il colore anche mediante indicatori visivi o segnali acustici. Se ad esempio determinate voci dell'elenco vengono evidenziate utilizzando un carattere di colore rosso, è possibile applicare al carattere anche la formattazione in grassetto, in modo da consentire all'utente di identificare le voci evidenziate mediante una modalità alternativa al colore.

  • Omette eventuali immagini o motivi dietro il testo

L'applicazione controlla l'impostazione di HighContrast all'avvio e risponde all'evento di sistema UserPreferenceChanged. L'evento UserPreferenceChanged viene generato in seguito a ogni modifica del valore di HighContrast.

Nell'applicazione sviluppata l'unico elemento che non utilizza le impostazioni di sistema relative al colore è lblCompanyName. La classe SystemColors Class viene utilizzata per modificare le impostazioni dei colori dell'etichetta nei colori di sistema selezionati dall'utente.

Per attivare correttamente la modalità Contrasto elevato

  1. Creare un metodo per impostare i colori dell'etichetta sui colori di 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;
       }
    }
    
  2. Chiamare la routine SetColorScheme nel costruttore di form (Public Sub New() in Visual Basic e public class Form1 in Visual C#). Per accedere al costruttore in Visual Basic è necessario espandere l'area con etichetta Codice generato da Progettazione Windows Form.

    ' Visual Basic 
    Public Sub New()
       MyBase.New()
       InitializeComponent()
       SetColorScheme()
    End Sub
    
    // C#
    public Form1()
    {
       InitializeComponent();
       SetColorScheme();
    }
    
  3. Creare una routine eventi, con la firma appropriata, per rispondere all'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();
    }
    
  4. Aggiungere al costruttore di form, dopo la chiamata a InitializeComponents, il codice necessario per associare la routine eventi all'evento di sistema. Questo metodo chiama la routine 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);
    }
    
  5. Aggiungere al metodo Dispose del form, prima della chiamata al metodo Dispose della classe base, il codice necessario per rilasciare l'evento alla chiusura dell'applicazione. Per accedere al metodo Dispose in Visual Basic, è necessario espandere l'area con etichetta Codice generato da Progettazione Windows Form.

    Nota

    Il codice dell'evento di sistema viene eseguito su un thread distinto dall'applicazione principale. Se l'evento non viene rilasciato, il codice a esso associato verrà eseguito anche dopo la chiusura del programma.

    ' 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 );
    }
    
  6. Premere F5 per eseguire l'applicazione.

Comunicazione di importanti informazioni mediante modalità alternative ai segnali acustici

In questa applicazione le informazioni non vengono comunicate solo mediante segnali acustici. Se nell'applicazione si utilizzano segnali acustici sarà necessario utilizzare anche altre modalità per la comunicazione delle informazioni.

Per comunicare informazioni mediante modalità alternative ai segnali acustici

  1. Rendere lampeggiante la barra del titolo mediante la funzione API FlashWindow di Windows . Per un esempio di chiamata delle funzioni API di Windows, vedere Procedura dettagliata: chiamata delle funzioni API di Windows.

    Nota

    Se il servizio Segnali visivi di Windows è attivato, la finestra lampeggia quando i segnali acustici del sistema vengono emessi tramite l'altoparlante incorporato del computer.

  2. Visualizzare le informazioni importanti in una finestra non modale, in modo da consentire all'utente di interagire con tali informazioni. Per ulteriori dettagli, vedere Visualizzazione di Windows Form modali e non.

  3. Visualizzare una finestra di messaggio che acquisisce lo stato attivo. Non utilizzare questo metodo durante la digitazione da parte dell'utente.

  4. Visualizzare un indicatore di stato nell'area di notifica dello stato della barra delle applicazioni. Per ulteriori dettagli, vedere Aggiunta di icone alla barra delle applicazioni mediante il componente NotifyIcon di Windows Form.

Verifica dell'applicazione

Prima di distribuire l'applicazione è necessario eseguire il test delle funzionalità di Accesso facilitato implementate.

Per eseguire il test delle funzionalità di Accesso facilitato

  1. Per eseguire il test dell'accesso da tastiera scollegare il mouse ed esplorare ciascuna funzionalità dell'interfaccia utente utilizzando solo la tastiera. Assicurarsi che tutte le attività possano essere eseguite mediante il solo utilizzo della tastiera.

  2. Per eseguire il test del supporto della modalità di Contrasto elevato, selezionare l'icona Accesso facilitato nel Pannello di controllo. Fare clic sulla scheda Schermo e selezionare la casella di controllo Usa contrasto elevato. Spostarsi tra gli elementi dell'interfaccia utente per verificare che vengano applicate le modifiche apportate ai caratteri e ai colori. Assicurarsi infine che non vengano visualizzati motivi o immagini dietro il testo.

    Nota

    L'icona Accesso facilitato non è disponibile nel Pannello di controllo di Windows NT 4 e pertanto in tale sistema operativo la procedura descritta per la modifica dell'impostazione SystemInformation.HighContrast non è utilizzabile.

  3. Sono disponibili altri strumenti per eseguire il test delle funzionalità di Accesso facilitato di un'applicazione.

  4. Per eseguire il test dell'esposizione dello stato attivo, eseguire Magnifier. Per aprirlo, scegliere Programmi dal menu Start, quindi Accessori e Accesso facilitato, infine fare clic su Magnifier. Spostarsi nell'interfaccia utente utilizzando i tasti di tabulazione e il mouse. Assicurarsi che lo spostamento venga rilevato correttamente in Magnifier.

  5. Per eseguire il test dell'esposizione degli elementi dello schermo, eseguire Inspect e spostarsi su ciascun elemento mediante il mouse e il tasto TAB. Assicurarsi che le informazioni visualizzate nei campi Nome, Stato, Ruolo, Posizione e Valore della finestra di Inspect relative a ciascun oggetto dell'interfaccia utente siano significative per l'utente. Inspect viene installato come parte di Microsoft® Active Accessibility® SDK, disponibile all'indirizzo https://msdn.microsoft.com/library/default.asp?url=/downloads/list/accessibility.asp