Exemplarische Vorgehensweise: Erstellen von behindertengerechten Windows-basierten Anwendungen
Das Erstellen von barrierefreien Anwendungen ist für Unternehmen von größter Bedeutung. Bei vielen staatlichen Stellen gibt es für den Kauf von Software Vorschriften hinsichtlich der Barrierefreiheit. Das Certified for Windows-Logo beinhaltet Anforderungen zur Barrierefreiheit. Allein in den USA gibt es etwa 30 Millionen Menschen, viele davon potenzielle Kunden, für die die Barrierefreiheit von Software maßgeblich ist.
In dieser exemplarischen Vorgehensweise werden die fünf Anforderungen zur Barrierefreiheit für das Certified for Windows-Logo erläutert. Entsprechend diesen Anforderungen muss eine barrierefreie Anwendung folgende Forderungen erfüllen:
Unterstützung der Systemsteuerungseinstellungen für Größe, Farbe, Schriftart und Eingabe. Wenn ein Benutzer die Einstellungen der Systemsteuerung ändert, wird die Größe der Menüleiste, der Titelleiste, der Ränder und der Statusleiste automatisch geändert. In dieser Anwendung sind keine weiteren Änderungen an den Steuerelementen oder am Code erforderlich.
Unterstützung für den Modus für hohe Kontraste.
Bereitstellen von dokumentierten Tastaturzugriffen auf alle Features.
Visuelle und programmgesteuerte Anzeige der Position des Tastaturfokus.
Vermeiden, dass wichtige Informationen ausschließlich akustisch übermittelt werden.
Weitere Informationen finden Sie unter Ressourcen für das Entwerfen von Anwendungen mit Barrierefreiheit.
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 besteht aus einem TextBox-Steuerelement für den Namen des Kunden, aus einer RadioButton-Gruppe, um die Pizzagröße auszuwählen, aus einem CheckedListBox-Steuerelement für die Auswahl des Belags, aus zwei Button-Steuerelementen, die mit "Bestellen" bzw. "Abbrechen" beschriftet sind, sowie aus einem Menü mit dem Befehl "Beenden".
Der Benutzer gibt den Namen des Kunden, die Größe der Pizza und die gewünschten Beläge ein. Klickt der Benutzer auf die Schaltfläche "Bestellen", werden in einem Meldungsfeld eine Zusammenfassung der Bestellung sowie deren Preis angezeigt, und die Inhalte der Steuerelemente werden gelöscht, damit diese für die nächste Bestellung verfügbar sind. Klickt der Benutzer auf die Schaltfläche "Abbrechen", werden die Inhalte der Steuerelemente gelöscht, damit diese für die nächste Bestellung verfügbar sind. 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 Barrierefreiheit der Benutzeroberfläche. Die exemplarische Vorgehensweise veranschaulicht die Barrierefreiheitsfeatures von einigen häufig verwendeten Steuerelementen wie Schaltflächen, Optionsfelder, Textfelder und Bezeichnungen.
So beginnen Sie mit der Erstellung der Anwendung
- Erstellen Sie eine neue Windows-Anwendung in Visual Basic oder Visual C#. Geben Sie dem Projekt den Namen Pizzabestellung. Weitere Informationen finden Sie unter Erstellen neuer Projektmappen und Projekte.
Hinzufügen der Steuerelemente zum Formular
Wenn Sie Steuerelemente zu einem Formular hinzufügen, sollten Sie die folgenden Richtlinien für eine barrierefreie Anwendung beachten:
Legen Sie die Eigenschaften AccessibleDescription und AccessibleName fest. In diesem Beispiel ist die Einstellung "Default" 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.
Hinweis
Wenn Sie den Schriftgrad des Formulars auf 10 festlegen, wenn Sie beginnen, 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 direkt vorangestellt ist.
Fügen Sie für die Text-Eigenschaft jedes Steuerelements, zu dem der Benutzer navigieren können soll, mit dem Zeichen „&“ eine Zugriffstaste hinzu.
Fügen Sie für die Text-Eigenschaft der Bezeichnung, die einem Steuerelement vorangestellt ist, zu dem der Benutzer navigieren können soll, mit dem Zeichen „&“ eine Zugriffstaste hinzu. Legen Sie UseMnemonic-Eigenschaft der Bezeichnungen auf
true
fest, sodass der Fokus auf das nächste Steuerelement in der Aktivierreihenfolge festgelegt wird, wenn der Benutzer die Zugriffstaste drückt.Fügen Sie allen Menüelementen Zugriffstasten hinzu.
So gestalten Sie eine Windows-Anwendung barrierefrei
Gehen Sie entsprechend der nachstehenden Beschreibung vor, um dem Formular die Steuerelemente hinzuzufügen und die Eigenschaften festzulegen. Am Ende der Tabelle finden Sie ein Bild, das ein Modell für die Anordnung der Steuerelemente auf dem Formular zeigt.
Object Eigenschaft Wert Form1 AccessibleDescription Bestellformular AccessibleName Bestellformular Schriftgrad 10 Text Pizzabestellformular PictureBox Name Logo AccessibleDescription Ein Stück Pizza AccessibleName Firmenlogo Image Ein Symbol oder eine Bitmap Bezeichnung Name companyLabel Text Gute Pizza TabIndex 1 AccessibleDescription Unternehmensname AccessibleName Unternehmensname Backcolor Blau Forecolor Gelb Schriftgrad 18 Bezeichnung Name customerLabel Text &Name TabIndex 2 AccessibleDescription Kundennamenbez. AccessibleName Kundennamenbez. UseMnemonic True TextBox Name customerName Text (none) TabIndex 3 AccessibleDescription Kundenname AccessibleName Kundenname 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 € Überprüft 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 (jeder 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 Schaltfläche Name order Text Reihenf&olge TabIndex 7 AccessibleDescription Gesamtbetrag der Bestellung ermitteln AccessibleName Gesamtbetrag Schaltfläche Name cancel Text &Abbrechen TabIndex 8 AccessibleDescription Stornieren der Bestellung AccessibleName Auftrag stornieren MainMenu Name theMainMenu MenuItem Name fileCommands Text &Datei MenuItem Name exitApp Text &Beenden Das Formular sieht in etwa wie die folgende Abbildung aus:
Unterstützen des Modus für hohe Kontraste
Der Modus für hohe Kontraste ist eine Windows-Systemeinstellung, die die Lesbarkeit verbessert, indem kontrastreiche Farben und Schriftgrade verwendet werden, die für sehbehinderte Benutzer vorteilhaft sind. Mit der HighContrast-Eigenschaft wird bestimmt, ob der Modus für hohe Kontraste festgelegt ist.
Wenn "SystemInformation.HighContrast" gleich true
ist, muss die Anwendung wie folgt vorgehen:
Sie zeigt alle Elemente der Benutzeroberfläche mit dem Systemfarbschema an.
Alle durch Farbe vermittelten Informationen müssen auch durch visuelle Hinweise oder durch Töne vermittelt werden. Wenn beispielsweise bestimmte Listenelemente in roter Schrift hervorgehoben sind, können Sie diese auch noch fett formatieren, sodass der Benutzer einen nicht farblichen Hinweis hat, dass die Elemente hervorgehoben sind.
Hinter Text dürfen weder Symbole oder Muster angezeigt werden.
Die Anwendung muss beim Start die Einstellung von HighContrast überprüfen und danach auf das Systemereignis UserPreferenceChanged reagieren. Das UserPreferenceChanged-Ereignis wird immer dann ausgelöst, wenn sich der Wert von HighContrast geändert hat.
In der vorliegenden Anwendung ist lblCompanyName
das einzige Element, für das nicht die Systemeinstellungen für Farbe verwendet werden. Die SystemColors-Klasse wird verwendet, um die Farbeinstellungen der Bezeichnung in die vom Benutzer ausgewählten Systemfarben zu ändern.
So aktivieren Sie den Modus für hohe Kontraste auf effektive Weise
Erstellen Sie eine Methode, mit der die Farben der Bezeichnung auf die Systemfarben festgelegt werden.
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; } }
Rufen Sie die Prozedur
SetColorScheme
im Konstruktor des Formulars (Public Sub New()
in Visual Basic undpublic Form1()
in Visual C#) auf. Damit Sie in Visual Basic auf den Konstruktor zugreifen können, müssen Sie den Bereich Vom Windows Form-Designer generierter Code erweitern.Public Sub New() MyBase.New() InitializeComponent() SetColorScheme() End Sub
public Form1() { InitializeComponent(); SetColorScheme(); }
Erstellen Sie eine Ereignisprozedur mit der entsprechenden Signatur, um auf das UserPreferenceChanged-Ereignis zu reagieren.
Protected Sub UserPreferenceChanged(sender As Object, _ e As Microsoft.Win32.UserPreferenceChangedEventArgs) SetColorScheme() End Sub
public void UserPreferenceChanged(object sender, Microsoft.Win32.UserPreferenceChangedEventArgs e) { SetColorScheme(); }
Fügen Sie dem Formularkonstruktor hinter dem Aufruf von
InitializeComponents
Code hinzu, der die Ereignisprozedur mit dem Systemereignis verknüpft. Diese Methode ruft dieSetColorScheme
-Prozedur auf.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); }
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. Damit Sie in Visual Basic auf die Dispose-Methode zugreifen können, müssen Sie den Bereich "Vom Windows Form-Designer generierter Code" erweitern.
Hinweis
Der Systemereigniscode führt getrennt 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üpft haben.
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 ); }
Drücken Sie F5, um die Anwendung auszuführen.
So vermitteln Sie wichtige Informationen anders als mit einer Tonfolge
In dieser Anwendung gibt es keine Informationen, die ausschließlich über eine Tonfolge vermittelt werden. Wenn Sie Tonfolgen in Ihrer Anwendung verwenden, sollten Sie die Informationen auch auf andere Weise bereitstellen.
So stellen Sie Informationen auf andere Weise als über Tonfolgen bereit
Lassen Sie die Titelleiste mithilfe der Windows-API-Funktion "FlashWindow" blinken. Ein Beispiel, wie Windows-API-Funktionen aufgerufen werden, finden Sie unter Exemplarische Vorgehensweise: Aufrufen von Windows-APIs.
Hinweis
Möglicherweise hat der Benutzer den Windows-Dienst "Darstellungsoptionen" aktiviert, der ebenfalls bewirkt, dass das Fenster blinkt, wenn Systemsounds über die integrierten Lautsprecher des Computers wiedergegeben werden.
Zeigen Sie die wichtigen Informationen in einem nicht modalen Fenster an, damit der Benutzer darauf reagieren kann.
Zeigen Sie ein Meldungsfeld an, das den Tastaturfokus erhält. Vermeiden Sie diese Methode, wenn der Benutzer eine Eingabe vornimmt.
Zeigen Sie eine Statusanzeige im Statusbereich der Taskleiste an. Weitere Informationen finden Sie unter Gewusst wie: 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 Stecker des Mauskabels heraus, und navigieren Sie in der Benutzeroberfläche nur über die Tastatur zu jedem Feature. Vergewissern Sie sich, dass alle Aufgaben über die Tastatur ausgeführt werden können.
Um die Unterstützung für hohen Kontrast zu testen, wählen Sie in der Systemsteuerung das Symbol "Eingabehilfen" aus. Klicken Sie auf die Registerkarte "Anzeige", und aktivieren Sie das Kontrollkästchen für die Verwendung von hohem Kontrast. Navigieren Sie durch alle Elemente der Benutzeroberfläche, um sich zu vergewissern, dass die Farb- und Schriftartänderungen übernommen wurden. Stellen Sie außerdem sicher, dass hinter Text gezeichnete Symbole und Muster unterdrückt werden.
Hinweis
In der Systemsteuerung von Windows NT 4 gibt es kein Symbol für Eingabehilfen (Barrierefreiheit). Daher funktioniert diese Vorgehensweise zum Ändern der SystemInformation.HighContrast-Einstellung in Windows NT 4 nicht.
Die Barrierefreiheit einer Anwendung kann außerdem mithilfe direkt verfügbarer Tools getestet werden.
Um die Verfügbarmachung des Tastaturfokus zu testen, führen Sie Bildschirmlupe aus. (Um Bildschirmlupe zu öffnen, klicken Sie auf Start, zeigen Sie auf Programme, zeigen Sie auf Zubehör, zeigen Sie auf Barrierefreiheit, und klicken Sie dann auf Bildschirmlupe). Navigieren Sie in der Benutzeroberfläche, wobei Sie sowohl die TAB-Taste als auch die Maus verwenden. Vergewissern Sie sich, dass die gesamte Navigation in Bildschirmlupe ordnungsgemäß nachverfolgt wird.
Um die Verfügbarmachung der Bildschirmelemente zu testen, führen Sie Inspect aus, und verwenden Sie die Maus und die TAB-Taste, um jedes Element zu erreichen. Vergewissern Sie sich, dass die Informationen, die im Fenster "Inspect" in den Feldern "Name", "State", "Role", "Location" und "Value" angezeigt werden, für den Benutzer für jedes Objekt in der Benutzeroberfläche aussagekräftig sind.
.NET Desktop feedback