Exemplarische Vorgehensweise: Erstellen von behindertengerechten Windows-basierten Anwendungen
Das Erstellen von barrierefreien Anwendungen ist für Unternehmen von größter Bedeutung. Viele Länder haben Verfügungen für den Vertrieb von Software mit Barrierefreiheit erlassen. Das Certified for Windows-Logo weist darauf hin, dass die Software die Anforderungen für barrierefreie Anwendungen erfüllt. Alleine in den USA sind etwa 30 Millionen Menschen, viele davon potenzielle Kunden, auf Barrierefreiheit von Software angewiesen.
Diese exemplarische Vorgehensweise beschäftigt sich mit den fünf Anforderungen an Barrierefreiheit, die Anwendungen erfüllen müssen, um das "Certified for Windows"-Logo zu erhalten. Dementsprechend muss eine barrierefreie Anwendung folgende Forderungen erfüllen:
Unterstützung der Systemsteuerungseinstellungen für Größe, Farbe, Schriftart und Eingabe. Wenn die Benutzer die Einstellungen der Systemsteuerung ändern, wird die Größe der Menüleiste, der Titelleiste, der Ränder und der Statusleiste automatisch geändert. In dieser Anwendung müssen keine weiteren Änderungen an den Steuerelementen oder dem Code vorgenommen werden.
Unterstützung des Kontrastmodus.
Bereitstellen eines dokumentierten Tastaturzugriffs auf alle Features.
Visuelle und programmgesteuerte Anzeige der Position des Tastaturfokus.
Vermeiden der Übermittlung wichtiger Informationen allein per Audioausgabe.
Weitere Informationen finden Sie unter Ressourcen für das Entwerfen von Anwendungen mit Barrierefreiheit, auf der MSDN Online-Webseite Certified for Windows Program (https://www.microsoft.com/germany/partner/isv/technsupport/zertifizierung/default.mspx) und auf der Webseite Designed for Windows XP Application Specification (https://go.microsoft.com/fwlink/?linkid=9775).
Weitere Informationen zur Unterstützung der verschiedenen Tastaturlayouts finden Sie unter Empfehlungen für die Entwicklung weltweit einsatzfähiger Anwendungen.
Erstellen des Projekts
In dieser exemplarischen Vorgehensweise wird die Benutzeroberfläche für eine Anwendung erstellt, mit der Pizzabestellungen entgegengenommen werden. Sie umfasst eine TextBox für den Namen des Kunden, eine RadioButton-Gruppe zur Auswahl der Pizzagröße, eine CheckedListBox für die Auswahl des Belags, zwei Button-Steuerelemente mit der Beschriftung Bestellen und Abbrechen sowie ein Menü mit dem Befehl Beenden.
Der Benutzer gibt den Kundennamen, die Pizzagröße und die gewünschten Beläge ein. Wenn er auf die Schaltfläche Bestellen klickt, werden in einem Meldungsfeld eine Zusammenfassung der Bestellung sowie der Preis angezeigt. Der Inhalt der Steuerelemente wird gelöscht, und es kann eine neue Bestellung eingegeben werden. Wenn der Benutzer auf die Schaltfläche Abbrechen klickt, wird der Inhalt der Steuerelemente gelöscht, und es kann eine neue Bestellung eingegeben werden. Klickt der Benutzer auf das Menüelement Beenden, wird das Programm beendet.
Der Schwerpunkt dieser exemplarischen Vorgehensweise liegt nicht auf dem Code für das Bestellsystem, sondern auf der barrierefreien Gestaltung der Benutzeroberfläche. Sie demonstriert die Barrierefreiheitsfeatures einer Reihe häufig verwendeter Steuerelemente, u. a. von Schaltflächen, Optionsfeldern, Textfeldern und Bezeichnungen.
So beginnen Sie mit der Erstellung der Anwendung
- Erstellen Sie in Visual Basic oder Visual C# eine neue Windows-Anwendung. Geben Sie dem Projekt den Namen PizzaOrder. (Weitere Informationen finden Sie unter Erstellen neuer Projektmappen und Projekte.)
Hinzufügen der Steuerelemente zum Formular
Beim Hinzufügen der Steuerelemente zum Formular sollten Sie die folgenden Richtlinien für eine barrierefreie Anwendung beachten:
Legen Sie die Eigenschaften AccessibleDescription und AccessibleName fest. In diesem Beispiel ist die Default-Einstellung für AccessibleRole ausreichend. Weitere Informationen zu den Eigenschaften von Barrierefreiheit finden Sie unter Informationen über die Barrierefreiheit für Steuerelemente in Windows Forms.
Legen Sie den Schriftgrad auf 10 Punkt oder größer fest.
Tipp
Wenn Sie den Schriftgrad des Formulars zunächst auf 10 Punkt festlegen, haben alle dem Formular anschließend hinzugefügten Steuerelemente ebenfalls den Schriftgrad 10.
Stellen Sie sicher, dass jedes Label-Steuerelement, das ein TextBox-Steuerelement beschreibt, dem TextBox-Steuerelement in der Aktivierreihenfolge unmittelbar vorangestellt ist.
Legen Sie mithilfe des kaufmännischen Und-Zeichens ("&") eine Zugriffstaste für die Text-Eigenschaft aller Steuerelemente fest, auf die ein Benutzer direkt zugreifen können sollte.
Fügen Sie mithilfe des kaufmännischen Und-Zeichens ("&") eine Zugriffstaste für die Text-Eigenschaft aller Bezeichnungen hinzu, die einem Steuerelement vorangestellt sind, auf das ein Benutzer direkt zugreifen können sollte. Legen Sie für die UseMnemonic-Eigenschaft der Bezeichnungen true fest, sodass der Fokus auf das nächste Steuerelement in der Aktivierreihenfolge gerichtet wird, wenn der Benutzer die Zugriffstaste drückt.
Fügen Sie allen Menüelementen Zugriffstasten hinzu.
So gestalten Sie eine Windows-Anwendung barrierefrei
Fügen Sie dem Formular die folgenden Steuerelemente hinzu, und legen Sie die Eigenschaften wie unten beschrieben fest. Am Ende der Tabelle sehen Sie eine modellhafte Darstellung der Anordnung der Steuerelemente im Formular.
Objekt
Eigenschaft
Wert
Form1
AccessibleDescription
Bestellformular
AccessibleName
Bestellformular
Font Size
10
Text
Pizzabestellformular
PictureBox
Name
Logo
AccessibleDescription
Ein Stück Pizza
AccessibleName
Unternehmenslogo
Bild
Ein beliebiges Symbol oder eine Bitmap
Bezeichnung
Name
companyLabel
Text
Good Pizza
TabIndex
1
AccessibleDescription
Unternehmensname
AccessibleName
Unternehmensname
BackColor
Blau
ForeColor
Gelb
Schriftgrad
18
Bezeichnung
Name
customerLabel
Text
&Name
TabIndex
2
AccessibleDescription
Kundenname
AccessibleName
Kundenname
UseMnemonic
True
TextBox
Name
customerName
Text
(kein)
TabIndex
3
AccessibleDescription
Name des Kunden
AccessibleName
Name des Kunden
GroupBox
Name
sizeOptions
AccessibleDescription
Mögliche Pizzagrößen
AccessibleName
Mögliche Pizzagrößen
Text
Pizzagröße
TabIndex
4
RadioButton
Name
smallPizza
Text
&Klein 6,00 €
Checked
True
TabIndex
0
AccessibleDescription
Kleine Pizza
AccessibleName
Kleine Pizza
RadioButton
Name
largePizza
Text
&Groß 10,00 €
TabIndex
1
AccessibleDescription
Große Pizza
AccessibleName
Große Pizza
Bezeichnung
Name
toppingsLabel
Text
&Beläge (jeweils 0,75 €)
TabIndex
5
AccessibleDescription
Bezeichnung des Belags
AccessibleName
Bezeichnung des Belags
UseMnemonic
True
CheckedListBox
Name
toppings
TabIndex
6
AccessibleDescription
Mögliche Beläge
AccessibleName
Mögliche Beläge
Elemente
Peperoni, Salami, Champignons
Button
Name
order
Text
&Bestellen
TabIndex
7
AccessibleDescription
Gesamtpreis der Bestellung ermitteln
AccessibleName
Gesamtpreis
Button
Name
cancel
Text
&Abbrechen
TabIndex
8
AccessibleDescription
Abbruch der Bestellung
AccessibleName
Bestellung abbrechen
MainMenu
Name
theMainMenu
MenuItem
Name
fileCommands
Text
&Datei
MenuItem
Name
exitApp
Text
B&eenden
Das Formular sollte etwa folgendermaßen aussehen:
Unterstützung des Kontrastmodus
Der Kontrastmodus ist eine Windows-Systemeinstellung, die durch die Verwendung kontrastreicher Farben und großer Schriftgrade die Lesbarkeit für sehbehinderte Benutzer verbessert. Mit der SystemInformation.HighContrast-Eigenschaft bestimmen Sie, ob der Kontrastmodus festgelegt ist.
Wenn SystemInformation.HighContrast auf true festgelegt wird, sollten die folgenden Voraussetzungen in der Anwendung erfüllt sein:
Alle Elemente der Benutzeroberfläche werden mit dem Farbschema des Systems angezeigt
Alle durch Farben ausgedrückten Informationen werden auch mithilfe von visuellen Hinweisen oder Audiosignalen wiedergeben. Wenn beispielsweise bestimmte Listenelemente in roter Schrift hervorgehoben sind, können Sie diese auch noch fett formatieren, sodass durch die Fettformatierung zusätzlich erkennbar ist, dass die Elemente hervorgehoben sind.
Hinter Text werden keine Symbole oder Muster angezeigt
Die Anwendung sollte beim Start automatisch die Einstellung von HighContrast überprüfen und auf das Systemereignis UserPreferenceChanged reagieren. Das UserPreferenceChanged-Ereignis wird ausgelöst, sobald sich der Wert von HighContrast ändert.
In unserer Anwendung ist lblCompanyName das einzige Element, das nicht die Systemfarbeinstellungen verwendet. Mit der SystemColors-Klasse ändern Sie die Farbeinstellungen der Bezeichnung in die vom Benutzer ausgewählten Systemfarben.
So aktivieren Sie den Kontrastmodus auf effektive Art und Weise
Erstellen Sie eine Methode, mit der Sie für die Bezeichnung die Systemfarben festlegen .
' 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; } }
Rufen Sie die SetColorScheme -Prozedur im Formularkonstruktor (Public Sub New() in Visual Basic, public class Form1 in Visual C#) auf. Um auf den Konstruktor in Visual Basic zugreifen zu können, müssen Sie den Bereich Vom Windows Form-Designer generierter Code erweitern.
' Visual Basic Public Sub New() MyBase.New() InitializeComponent() SetColorScheme() End Sub // C# public Form1() { InitializeComponent(); SetColorScheme(); }
Erstellen Sie eine Ereignisprozedur mit der entsprechenden Signatur, die auf das UserPreferenceChanged-Ereignis reagiert.
' 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(); }
Fügen Sie dem Formularkonstruktor nach dem Aufruf von InitializeComponents Code hinzu, der die Ereignisprozedur mit dem Systemereignis verknüpft. Diese Methode ruft die SetColorScheme -Prozedur auf.
' 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); }
Fügen Sie der Dispose-Methode des Formulars vor dem Aufruf der Dispose-Methode der Basisklasse Code hinzu, der das Ereignis freigibt, wenn die Anwendung geschlossen wird. Um auf die Dispose-Methode in Visual Basic zugreifen zu können, müssen Sie den Bereich Vom Windows Form-Designer generierter Code erweitern.
Tipp
Der Systemereigniscode führt separat von der Hauptanwendung einen Thread aus. Wenn Sie das Ereignis nicht freigeben, wird auch nach dem Schließen des Programms weiterhin der Code ausgeführt, den Sie mit dem Ereignis verknüpfen.
' 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 ); }
Drucken Sie F5, um die Anwendung auszuführen.
Übermitteln wichtiger Informationen auf andere Weise als per Audioausgabe
In dieser Anwendung werden keine Informationen allein durch Audioausgabe übermittelt. Wenn Sie in Ihrer Anwendung Audioausgabe verwenden, sollten Sie die Informationen auch auf andere Weise zur Verfügung stellen.
So übermitteln Sie Informationen auf andere Weise als per Audioausgabe
Lassen Sie die Titelleiste mithilfe der Windows API-Funktion FlashWindow blinken. Ein Beispiel für einen Aufruf von Windows-API-Funktionen finden Sie unter Exemplarische Vorgehensweise: Aufrufen von Windows-APIs.
Tipp
Falls die Benutzer Windows SoundSentry Service aktiviert haben, blinkt das Fenster während der Wiedergabe der Systemsounds über die integrierten Lautsprecher.
Zeigen Sie wichtige Informationen in einem nicht modalen Fenster an, sodass die Benutzer darauf reagieren können. Weitere Informationen finden Sie unter Anzeigen modaler und nicht modaler Windows Forms.
Zeigen Sie ein Meldungsfeld an, das den Tastaturfokus erhält. Dies sollte vermieden werden, wenn die Benutzer möglicherweise eine Eingabe vornehmen.
Zeigen Sie eine Statusanzeige im Statusbereich der Taskleiste an. Weitere Informationen finden Sie unter Hinzufügen von Anwendungssymbolen zur Taskleiste mit der NotifyIcon-Komponente in Windows Forms.
Testen der Anwendung
Bevor Sie die Anwendung bereitstellen, sollten Sie die implementierten Barrierefreiheitsfeatures testen.
So testen Sie die Barrierefreiheitsfeatures
Um den Tastaturzugriff zu testen, ziehen Sie den Mausstecker aus dem Computer heraus und greifen auf alle Features der Benutzeroberfläche nur mithilfe der Tastatur zu. Stellen Sie sicher, dass sich sämtliche Aufgaben auch ausschließlich über die Tastatur ausführen lassen.
Wählen Sie zum Testen der Kontrastunterstützung in der Systemsteuerung das Symbol Barrierefreiheit. Klicken Sie auf die Registerkarte Anzeige, und aktivieren Sie das Kontrollkästchen Kontrast aktivieren. Überprüfen Sie in den einzelnen Elementen der Benutzeroberfläche, ob die Farben und die Schriftart entsprechend geändert wurden. Darüber hinaus muss die Anzeige von Symbolen und Mustern hinter dem Text unterdrückt sein.
Tipp
Unter Windows NT 4 ist in der Systemsteuerung kein Symbol für Barrierefreiheit verfügbar. Diese Prozedur zum Ändern der SystemInformation.HighContrast-Einstellung funktioniert unter Windows NT 4 daher nicht.
Die Barrierefreiheit einer Anwendung können darüber hinaus direkt mithilfe spezieller Tools getestet werden.
Um die Kennzeichnung des Tastaturfokus zu testen, verwenden Sie die Bildschirmlupe. (Zeigen Sie zum Öffnen der Bildschirmlupe im Startmenü auf Programme, dann auf Zubehör, anschließend auf Barrierefreiheit, und klicken Sie auf Bildschirmlupe.) Navigieren Sie durch die Benutzeroberfläche. Verwenden Sie dazu sowohl die TAB-Taste als auch die Maus. Stellen Sie sicher, dass sämtliche Aktionen ordnungsgemäß in der Bildschirmlupe wiedergegeben werden.
Um die Kennzeichnung der Bildschirmelemente zu testen, führen Sie Inspect aus, und testen Sie die einzelnen Elemente sowohl mit der Maus als auch mit der TAB-TASTE. Stellen Sie sicher, dass die in den Feldern Name, State, Role, Location und Value des Fensters Inspect angezeigten Informationen für die Benutzer der einzelnen Objekte der Benutzeroberfläche aussagekräftig sind. Inspect wird als Teil des Microsoft® Active Accessibility®-SDKs installiert, das unter https://msdn.microsoft.com/library/default.asp?url=/downloads/list/accessibility.asp erhältlich ist.