Freigeben über


Exemplarische Vorgehensweise: Erstellen einer barrierefreien Windows-basierten Anwendung

Das Erstellen einer barrierefreien Anwendung hat wichtige geschäftliche Auswirkungen. Viele Regierungen haben Barrierefreiheitsvorschriften für den Softwarekauf. Das für Windows zertifizierte Logo enthält Barrierefreiheitsanforderungen. Allein 30 Millionen Einwohner der USA, viele von ihnen potenzielle Kunden, sind von der Barrierefreiheit von Software betroffen.

In dieser exemplarischen Vorgehensweise werden die fünf Anforderungen an die Barrierefreiheit für das Logo "Zertifiziert für Windows" erfüllt. Gemäß diesen Anforderungen sollte eine barrierefreie Anwendung:

  • Unterstützen Sie die Systemsteuerungsgröße, Farbe, Schriftart und Eingabeeinstellungen. Die Menüleiste, die Titelleiste, die Rahmen und die Statusleiste ändern sich alle selbst, wenn der Benutzer die Einstellungen der Systemsteuerung ändert. In dieser Anwendung sind keine zusätzlichen Änderungen an den Steuerelementen oder Code erforderlich.

  • Unterstützt den Modus "Hoher Kontrast".

  • Bereitstellen des dokumentierten Tastaturzugriffs auf alle Features.

  • Stellen Sie die Position des Tastaturfokus visuell und programmgesteuert zur Verfügung.

  • Vermeiden Sie es, wichtige Informationen allein durch Sound zu vermitteln.

Weitere Informationen finden Sie unter Ressourcen für das Entwerfen barrierefreier Anwendungen.

Informationen zur Unterstützung unterschiedlicher Tastaturlayouts finden Sie unter "Best Practices for Developing World-Ready Applications".

Projekt erstellen

In dieser exemplarischen Vorgehensweise wird die Benutzeroberfläche für eine Anwendung erstellt, die Pizzabestellungen übernimmt. Es besteht aus einem TextBox für den Namen des Kunden, einer RadioButton-Gruppe zum Auswählen der Pizzagröße, einer CheckedListBox zum Auswählen der Beläge, zwei Schaltflächensteuerelementen mit der Bezeichnung "Bestellen" und "Abbrechen" und einem Menü mit einem Befehl "Beenden".

Der Benutzer gibt den Namen des Kunden, die Größe der Pizza und die gewünschten Beläge ein. Wenn der Benutzer auf die Schaltfläche "Bestellung" klickt, wird eine Zusammenfassung der Bestellung und deren Kosten in einem Meldungsfeld angezeigt und die Steuerelemente werden gelöscht, sodass sie bereit für die nächste Bestellung sind. Wenn der Benutzer auf die Schaltfläche "Abbrechen" klickt, werden die Eingaben gelöscht und sind bereit für die nächste Bestellung. Wenn der Benutzer auf das Menüelement "Beenden" klickt, wird das Programm geschlossen.

Der Schwerpunkt dieser Anleitung liegt nicht auf dem Code für ein Einzelhandelsauftragssystem, sondern auf der Barrierefreiheit der Benutzeroberfläche. Die Anleitung veranschaulicht die Barrierefreiheitsfunktionen mehrerer häufig verwendeter Steuerelemente, darunter Schaltflächen, Optionsfelder, Textfelder und Labels.

So beginnen Sie mit der Erstellung der Anwendung

  • Erstellen Sie eine neue Windows-Anwendung in Visual Basic oder Visual C#. Nennen Sie das Projekt "PizzaOrder". Weitere Informationen finden Sie unter Creating New Solutions and Projects.

Hinzufügen der Steuerelemente zum Formular

Beachten Sie beim Hinzufügen der Steuerelemente zu einem Formular die folgenden Richtlinien, um eine barrierefreie Anwendung zu erstellen:

  • Legen Sie für die Eigenschaften AccessibleDescription und AccessibleName fest. In diesem Beispiel ist die Standardeinstellung für die AccessibleRole ausreichend. Weitere Informationen zu den Barrierefreiheitseigenschaften finden Sie unter Bereitstellen von Barrierefreiheitsinformationen für Steuerelemente in einem Windows Form.For more information on the accessibility properties, see Providing Accessibility Information for Controls on a Windows Form.

  • Legen Sie den Schriftgrad auf 10 Punkt oder größer fest.

    Hinweis

    Wenn Sie den Schriftgrad des Formulars beim Start auf 10 festlegen, weisen alle dem Formular anschließend hinzugefügten Steuerelemente einen Schriftgrad von 10 auf.

  • Stellen Sie sicher, dass ein Beschriftungssteuerelement, das ein TextBox-Steuerelement beschreibt, unmittelbar vor dem TextBox-Steuerelement in der Aktivierreihenfolge steht.

  • Fügen Sie der Eigenschaft eines beliebigen Steuerelements, zu dem der Text Benutzer navigieren möchte, eine Zugriffstaste hinzu, indem Sie das Zeichen "&" verwenden.

  • Fügen Sie der Eigenschaft der Bezeichnung, die Text einem Steuerelement vorausgeht, eine Zugriffstaste mit dem Zeichen "&" hinzu, zu dem der Benutzer navigieren möchte. Legen Sie die Eigenschaft der Bezeichnungen UseMnemonic auf true fest, sodass der Fokus auf das nächste Steuerelement in der Tab-Reihenfolge festgelegt wird, wenn der Benutzer den Zugangsschlüssel drückt.

  • Fügen Sie allen Menüelementen Zugriffstasten hinzu.

So machen Sie Ihre Windows-Anwendung barrierefrei

  • Fügen Sie dem Formular die Steuerelemente hinzu, und legen Sie die Eigenschaften wie unten beschrieben fest. Sehen Sie sich das Bild am Ende der Tabelle an, um ein Modell zum Anordnen der Steuerelemente im Formular anzuzeigen.

    Objekt Eigentum Wert
    Formular1 ZugänglicheBeschreibung Bestellschein
    Barrierefreier Name Bestellschein
    Schriftgröße 10
    Text Pizza-Bestellformular
    PictureBox Name Logo
    ZugänglicheBeschreibung Ein Stück Pizza
    Barrierefreier Name Unternehmenslogo
    Abbildung Beliebiges Symbol oder Bitmap
    Etikett Name companyLabel
    Text Gute Pizza
    TabIndex 1
    ZugänglicheBeschreibung Unternehmensname
    Barrierefreier Name Unternehmensname
    Hintergrundfarbe Blau
    Forecolor Gelb
    Schriftgrad 18
    Etikett Name Kundenetikett
    Text &Name
    TabIndex 2
    ZugänglicheBeschreibung Kundenname
    Barrierefreier Name Kundenname
    UseMnemonic Richtig
    Textfeld Name Kundenname
    Text (kein)
    TabIndex 3
    ZugänglicheBeschreibung Name des Kunden
    Barrierefreier Name Name des Kunden
    GroupBox Name Größenoptionen
    ZugänglicheBeschreibung Pizzagrößenoptionen
    Barrierefreier Name Pizzagrößenoptionen
    Text Pizzagröße
    TabIndex 4
    RadioButton Name smallPizza
    Text &Klein $ 6,00
    Geprüft Richtig
    TabIndex 0
    ZugänglicheBeschreibung Kleine Pizza
    Barrierefreier Name Kleine Pizza
    RadioButton Name largePizza
    Text Groß $10,00
    TabIndex 1
    ZugänglicheBeschreibung Große Pizza
    Barrierefreier Name Große Pizza
    Etikett Name toppingsLabel
    Text &Toppings (pro Stück 0,75 €)
    TabIndex 5
    ZugänglicheBeschreibung Toppings-Beschriftung
    Barrierefreier Name Toppings-Beschriftung
    UseMnemonic Richtig
    CheckedListBox Name Garnierungen
    TabIndex 6
    ZugänglicheBeschreibung Verfügbare Toppings
    Barrierefreier Name Verfügbare Toppings
    Gegenstände Pfefferoni, Wurst, Pilze
    Schaltfläche Name Auftrag
    Text &Reihenfolge
    TabIndex 7
    ZugänglicheBeschreibung Summe der Bestellung
    Barrierefreier Name Gesamtauftrag
    Schaltfläche Name Abbrechen
    Text &Abbrechen
    TabIndex 8
    ZugänglicheBeschreibung Stornieren der Bestellung
    Barrierefreier Name Auftrag stornieren
    Hauptmenü Name Hauptmenü
    Menüpunkt Name fileCommands
    Text &Datei
    Menüpunkt Name exitApp
    Text E&xit

    Ihr Formular sieht ungefähr wie die folgende Abbildung aus:

    Das Pizza-Bestellformular mit einem Textfeld für den Namen sowie der Auswahl der Größe und der Beläge.

Unterstützen des Modus für hohen Kontrast

Der Modus "Hoher Kontrast" ist eine Windows-Systemeinstellung, die die Lesbarkeit verbessert, indem Kontrastfarben und Schriftgrade verwendet werden, die für sehbehinderte Benutzer von Vorteil sind. Die HighContrast Eigenschaft wird bereitgestellt, um zu bestimmen, ob der Modus für hohen Kontrast festgelegt ist.

Wenn SystemInformation.HighContrast ist true, sollte die Anwendung:

  • Anzeigen aller Benutzeroberflächenelemente mithilfe des Systemfarbschemas

  • Vermitteln Sie jegliche Informationen, die durch Farbe übermittelt werden, mittels visuellen Hinweisen oder Tonsignalen. Wenn beispielsweise bestimmte Listenelemente mithilfe einer roten Schriftart hervorgehoben werden, können Sie der Schriftart auch Fettschrift hinzufügen, sodass der Benutzer einen nicht farbigen Hinweis darauf hat, dass die Elemente hervorgehoben sind.

  • Weglassen von Bildern oder Mustern hinter Text

Die Anwendung sollte die Einstellung HighContrast überprüfen, wann die Anwendung startet und auf das Systemereignis UserPreferenceChangedreagiert. Das UserPreferenceChanged Ereignis wird jedes Mal ausgelöst, wenn sich der Wert HighContrast ändert.

In unserer Anwendung ist lblCompanyNamedas einzige Element, das nicht die Systemeinstellungen für die Farbe verwendet. Die SystemColors Klasse wird verwendet, um die Farbeinstellungen der Beschriftung in die vom Benutzer ausgewählten Systemfarben zu ändern.

So aktivieren Sie den Modus "Hoher Kontrast" auf effektive Weise

  1. Erstellen Sie eine Methode, um die Farben der Beschriftung auf die Systemfarben festzulegen.

    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. Rufen Sie die SetColorScheme Prozedur im Formularkonstruktor auf (Public Sub New() in Visual Basic und public Form1() in Visual C#). Um auf den Konstruktor in Visual Basic zuzugreifen, müssen Sie den Bereich Windows Form Designer generierten Code erweitern.

    Public Sub New()
        MyBase.New()
        InitializeComponent()
        SetColorScheme()
    End Sub
    
    public Form1()
    {
        InitializeComponent();
        SetColorScheme();
    }
    
  3. 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();
    }
    
  4. Fügen Sie dem Formularkonstruktor Code hinzu, nach dem Aufruf von InitializeComponents, um die Ereignisprozedur mit dem Systemereignis zu verbinden. Diese Methode ruft die SetColorScheme 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);
    }
    
  5. Fügen Sie der Formularmethode Dispose Code vor dem Aufruf der Dispose Methode der Basisklasse hinzu, um das Ereignis freizugeben, wenn die Anwendung geschlossen wird. Um auf die Dispose Methode in Visual Basic zuzugreifen, müssen Sie den Bereich erweitern, der als 'Vom Windows-Formular-Designer generierter Code' bezeichnet ist.

    Hinweis

    Der Systemereigniscode führt einen thread getrennt von der Hauptanwendung aus. Wenn Sie das Ereignis nicht freigeben, wird der Code, den Sie mit dem Ereignis verbinden, auch nach dem Schließen des Programms ausgeführt.

    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. Drücken Sie F5, um die Anwendung auszuführen.

Übermittlung wichtiger Informationen auf andere Weise als über Klang

In dieser Anwendung werden keine Informationen allein durch Ton vermittelt. Wenn Sie Sound in Ihrer Anwendung verwenden, sollten Sie die Informationen auch auf andere Weise bereitstellen.

Stellen Sie Informationen auf andere Weise als durch Ton bereit.

  1. Machen Sie den Titelleistenblitz mithilfe der Windows-API-Funktion FlashWindow. Ein Beispiel zum Aufrufen von Windows-API-Funktionen finden Sie unter Exemplarische Vorgehensweise: Aufrufen von Windows-APIs.

    Hinweis

    Der Benutzer hat möglicherweise den Windows SoundSentry-Dienst aktiviert, was auch dazu führt, dass das Fenster blinkt, wenn die Systemsounds über den integrierten Lautsprecher des Computers wiedergegeben werden.

  2. Zeigen Sie die wichtigen Informationen in einem nicht modalen Fenster an, damit der Benutzer darauf reagieren kann.

  3. Anzeigen eines Meldungsfelds, das den Tastaturfokus erhält. Vermeiden Sie diese Methode, wenn der Benutzer möglicherweise eingabet.

  4. Zeigt einen Statusindikator im Statusbenachrichtigungsbereich der Taskleiste an. Ausführliche Informationen finden Sie unter Hinzufügen von Anwendungssymbolen zur Taskleiste mit der Windows Forms NotifyIcon-Komponente.

Testen der Anwendung

Bevor Sie die Anwendung bereitstellen, sollten Sie die von Ihnen implementierten Barrierefreiheitsfeatures testen.

So testen Sie Barrierefreiheitsfunktionen

  1. Wenn Sie den Tastaturzugriff testen möchten, trennen Sie die Maus, und navigieren Sie in der Benutzeroberfläche für jede Funktion, indem Sie nur die Tastatur verwenden. Stellen Sie sicher, dass alle Aufgaben nur über die Tastatur ausgeführt werden können.

  2. Um die Unterstützung für hohen Kontrast zu testen, wählen Sie in der Systemsteuerung das Symbol "Barrierefreiheitsoptionen" aus. Klicken Sie auf die Registerkarte "Anzeige", und aktivieren Sie das Kontrollkästchen "Hohen Kontrast verwenden". Navigieren Sie durch alle Benutzeroberflächenelemente, um sicherzustellen, dass die Farb- und Schriftartänderungen widergespiegelt werden. Stellen Sie außerdem sicher, dass Bilder oder Muster, die hinter Text gezeichnet wurden, weggelassen werden.

    Hinweis

    Windows NT 4 verfügt nicht über ein Symbol für Barrierefreiheitsoptionen in der Systemsteuerung. Daher funktioniert dieses Verfahren zum Ändern der Einstellung "SystemInformation.HighContrast" in Windows NT 4 nicht.

  3. Andere Tools sind sofort zum Testen der Barrierefreiheit einer Anwendung verfügbar.

  4. Führen Sie die Bildschirmlupe aus, um zu testen, wie der Tastaturfokus angezeigt wird. (Klicken Sie zum Öffnen auf das Startmenü, zeigen Sie auf Programme, zeigen Sie auf Zubehör, zeigen Sie auf Barrierefreiheit, und klicken Sie dann auf Bildschirmlupe). Navigieren Sie auf der Benutzeroberfläche sowohl mit der Tastatur (Tabulator-Taste) als auch mit der Maus. Stellen Sie sicher, dass die Navigation in der Bildschirmlupe ordnungsgemäß nachverfolgt wird.

  5. Um die Anzeige von Bildschirmelementen zu testen, führen Sie Inspect aus, und verwenden Sie sowohl die Maus als auch die TAB-TASTE, um die einzelnen Elemente zu erreichen. Stellen Sie sicher, dass die Informationen, die in den Feldern "Name", "Status", "Rolle", "Ort" und "Wert" des Fensters "Inspect" für jedes Objekt in der Benutzeroberfläche von Bedeutung sind.