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
- Creare una nuova applicazione Windows in Visual Basic o Visual C#. Denominare il progetto PizzaOrder. Per informazioni dettagliate, vedere Creazione di nuove soluzioni e progetti.
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:
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
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; } }
Chiamare la procedura
SetColorScheme
nel costruttore del modulo (Public Sub New()
in Visual Basic epublic 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(); }
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(); }
Aggiungere codice al costruttore del modulo, dopo la chiamata a
InitializeComponents
, per collegare la procedura evento all'evento di sistema. Questo metodo chiama la routineSetColorScheme
.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); }
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 ); }
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
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.
Visualizzare le informazioni importanti in una finestra non modale in modo che l'utente possa rispondere.
Visualizza una finestra di messaggio che acquisisce lo stato attivo della tastiera. Evitare questo metodo quando l'utente potrebbe digitare.
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à
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.
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.
Altri strumenti sono facilmente disponibili per testare l'accessibilità di un'applicazione.
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.
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.
.NET Desktop feedback