Dela via


Genomgång: Skapa ett tillgängligt Windows-baserat program

Att skapa ett tillgängligt program har viktiga affärskonsekvenser. Många myndigheter har tillgänglighetsregler för programvaruköp. Logotypen Certifierad för Windows innehåller hjälpmedelskrav. Uppskattningsvis 30 miljoner invånare i USA, många av dem potentiella kunder, påverkas av tillgången till programvara.

Den här genomgången hanterar de fem tillgänglighetskraven för logotypen Certifierad för Windows. Enligt dessa krav kommer ett tillgängligt program att:

  • Stöd för inställningar för kontrollpanelens storlek, färg, teckensnitt och indata. Menyraden, namnlisten, kantlinjerna och statusfältet ändrar storlek när användaren ändrar inställningarna för kontrollpanelen. Inga ytterligare ändringar av kontrollerna eller koden krävs i det här programmet.

  • Stöd för högkontrastläge.

  • Ge dokumenterad tangentbordsåtkomst till alla funktioner.

  • Exponera platsen för tangentbordets fokus visuellt och programmatiskt.

  • Undvik att förmedla viktig information enbart med ljud.

Mer information finns i Resurser för att utforma tillgängliga program.

Information om hur du stöder olika tangentbordslayouter finns i Best Practices for Developing World-Ready Applications.

Skapa projektet

Den här genomgången skapar användargränssnittet för ett program som tar pizzabeställningar. Den består av en TextBox för kundens namn, en RadioButton grupp för att välja pizzastorlek, en CheckedListBox för att välja toppings, två knappkontroller märkta Order and Cancel och en meny med ett exit-kommando.

Användaren anger kundens namn, pizzans storlek och önskade pålägg. När användaren klickar på knappen Order visas en sammanfattning av ordern och dess kostnad i en meddelanderuta och kontrollerna rensas och är redo för nästa beställning. När användaren klickar på knappen Avbryt rensas kontrollerna och är redo för nästa beställning. När användaren klickar på menyalternativet Avsluta stängs programmet.

Betoningen av den här genomgången är inte koden för ett detaljhandelsordersystem, utan tillgängligheten för användargränssnittet. Genomgången visar hjälpmedelsfunktionerna i flera kontroller som används ofta, inklusive knappar, alternativknappar, textrutor och etiketter.

För att börja skapa applikationen

Lägga till kontrollerna i formuläret

När du lägger till kontrollerna i ett formulär bör du tänka på följande riktlinjer för att göra ett tillgängligt program:

  • Ange egenskaperna AccessibleDescription och AccessibleName. I det här exemplet räcker det med standardinställningen för AccessibleRole. Mer information om hjälpmedelsegenskaperna finns i Tillhandahålla hjälpmedelsinformation för kontroller i ett Windows-formulär.

  • Ange teckenstorleken till 10 punkter eller större.

    Note

    Om du anger teckenstorleken för formuläret till 10 när du startar, kommer alla kontroller som sedan läggs till i formuläret att ha en teckenstorlek på 10.

  • Kontrollera att alla etikettkontroller som beskriver en TextBox-kontroll omedelbart föregår TextBox-kontrollen i tabbordningen.

  • Lägg till en åtkomstnyckel med tecknet "&" i egenskapen Text för alla kontroller som användaren kanske vill navigera till.

  • Lägg till en åtkomstnyckel med tecknet "&" i egenskapen Text för etiketten som föregår en kontroll som användaren kanske vill navigera till. Ange egenskapen UseMnemonic för etiketter till true, så att fokus ställs in på nästa kontroll i tabbordningen när användaren trycker på åtkomstnyckeln.

  • Lägg till åtkomstnycklar till alla menyalternativ.

Så här gör du ditt Windows-program tillgängligt

  • Lägg till kontrollerna i formuläret och ange egenskaperna enligt beskrivningen nedan. Se bilden i slutet av tabellen för en modell för hur du ordnar kontrollerna i formuläret.

    Objekt Egenskap Värde
    Formulär 1 TillgängligBeskrivning Beställningsformulär
    AccessibleNamn Beställningsformulär
    Teckenstorlek 10
    Text Formulär för pizzabeställning
    Bildruta Namn logotyp
    BeskrivningFörTillgänglighet En bit pizza
    TillgängligNamn Företagslogotyp
    Bild Valfri ikon eller bitmapp
    Etikett Namn företagsetikett
    Text Bra pizza
    TabIndex 1
    Tillgänglighetsbeskrivning Företagsnamn
    TillgängligNamn Företagsnamn
    Bakgrundsfärg Blå
    Forecolor Gul
    Teckenstorlek 18
    Etikett Namn kundetikett
    Text &namn
    TabIndex 2
    TillgängligBeskrivning Etikett för kundnamn
    Tillgänglighetsnamn Etikett för kundnamn
    UseMnemonic Sann
    Textruta Namn kundnamn
    Text (ingen)
    TabIndex 3
    TillgängligBeskrivning Kundnamn
    TillgängligtNamn Kundnamn
    Gruppruta Namn storleksalternativ
    Tillgänglig beskrivning Alternativ för pizzastorlek
    TillgängligtNamn Alternativ för pizzastorlek
    Text Pizzastorlek
    TabIndex 4
    Radiobutton Namn smallPizza
    Text &Small $6,00
    Rutig Sann
    TabIndex 0
    Tillgänglig beskrivning Liten pizza
    TillgängligNamn Liten pizza
    Radiobutton Namn largePizza
    Text &Large $10,00
    TabIndex 1
    Tillgänglighetsbeskrivning Stor pizza
    Tillgänglighetsnamn Stor pizza
    Etikett Namn Påläggetikett
    Text &Toppings ($0.75 vardera)
    TabIndex 5
    TillgängligBeskrivning Toppingetikett
    TillgängligtNamn Etikett för pålägg
    UseMnemonic Sann
    CheckedListBox Namn Pålägg
    TabIndex 6
    Tillgänglig beskrivning Tillgängliga toppings
    Tillgänglighetsnamn Tillgängliga toppings
    Objekt Pepperoni, Korv, Svamp
    Knapp Namn ordning
    Text &beställning
    TabIndex 7
    TillgängligBeskrivning Summera beställningen
    TillgängligtNamn Totalordning
    Knapp Namn annullera
    Text &Avbryt
    TabIndex 8
    Beskrivning för tillgänglighet Avbryt beställningen
    Tillgänglighetsnamn Avbryt beställning
    Huvudmeny Namn Huvudmenyn
    Menyobjekt Namn filkommandon
    Text &fil
    Menyalternativ Namn avslutaApp
    Text E&xit

    Formuläret ser ut ungefär så här:

    Pizzabeställningsformuläret med en namntextruta och storlek och toppingsval.

Stöd för högkontrastläge

Högkontrastläge är en Windows-systeminställning som förbättrar läsbarheten med hjälp av kontrasterande färger och teckenstorlekar som är fördelaktiga för användare med nedsatt syn. Egenskapen HighContrast tillhandahålls för att avgöra om högkontrastläget har angetts.

Om SystemInformation.HighContrast är truebör programmet:

  • Visa alla användargränssnittselement med hjälp av systemets färgschema

  • Förmedla med visuella signaler eller ljud all information som förmedlas genom färg. Om vissa listobjekt till exempel är markerade med ett rött teckensnitt kan du också lägga till fetstil i teckensnittet, så att användaren har en icke-färgreplik som objekten är markerade med.

  • Utelämna bilder eller mönster bakom text

Programmet bör kontrollera inställningen för HighContrast när programmet startar och svara på systemhändelsen UserPreferenceChanged. Händelsen UserPreferenceChanged utlöses när värdet för HighContrast ändras.

I vårt program är det enda element som inte använder systeminställningarna för färg lblCompanyName. Klassen SystemColors används för att ändra färginställningarna för etiketten till de användarvalda systemfärgerna.

Aktivera högkontrastläge på ett effektivt sätt

  1. Skapa en metod för att ange färgerna på etiketten till systemfärgerna.

    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. Anropa SetColorScheme-proceduren i formulärkonstruktorn (Public Sub New() i Visual Basic och public Form1() i Visual C#). För att få åtkomst till konstruktorn i Visual Basic måste du expandera den region som är märkt Windows Form Designer-genererad kod.

    Public Sub New()
        MyBase.New()
        InitializeComponent()
        SetColorScheme()
    End Sub
    
    public Form1()
    {
        InitializeComponent();
        SetColorScheme();
    }
    
  3. Skapa en händelseprocedur med lämplig signatur för att svara på den UserPreferenceChanged händelsen.

    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. Lägg till kod i formulärkonstruktorn efter anropet till InitializeComponentsför att ansluta händelseproceduren till systemhändelsen. Den här metoden anropar proceduren SetColorScheme.

    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. Lägg till kod i formuläret Dispose-metoden, innan anropet till Dispose-metoden för basklassen, för att släppa händelsen när programmet stängs. För att få åtkomst till Dispose-metoden i Visual Basic måste du expandera den region som är märkt Windows Form Designer-genererad kod.

    Notera

    Systemhändelsekoden kör en tråd som är separat från huvudprogrammet. Om du inte släpper händelsen körs koden som du ansluter till händelsen även efter att programmet har stängts.

    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. Tryck på F5 för att köra programmet.

Förmedla viktig information med andra medel än ljud

I det här programmet förmedlas ingen information enbart av ljud. Om du använder ljud i programmet bör du även ange informationen på något annat sätt.

Att tillhandahålla information på något annat sätt än ljud

  1. Gör så att namnlisten blinkar med hjälp av Windows API-funktionen FlashWindow. Ett exempel på hur du anropar Windows API-funktioner finns i Genomgång: Anropa Windows-API:er.

    Anteckning

    Användaren kan ha Windows SoundSentry-tjänsten aktiverad, vilket också gör att fönstret blinkar när systemljuden spelas upp via datorns inbyggda högtalare.

  2. Visa viktig information i ett icke-modalt fönster så att användaren kan svara på den.

  3. Visa en meddelanderuta som hämtar tangentbordets fokus. Undvik den här metoden när användaren kanske skriver.

  4. Visa en statusindikator i statusmeddelandeområdet i aktivitetsfältet. Mer information finns i Lägga till programikoner i Aktivitetsfältet med Windows Forms NotifyIcon-komponenten.

Testa programmet

Innan du distribuerar programmet bör du testa de hjälpmedelsfunktioner som du har implementerat.

Testa hjälpmedelsfunktioner

  1. Om du vill testa tangentbordsåtkomst kopplar du bort musen och navigerar i användargränssnittet för varje funktion med endast tangentbordet. Kontrollera att alla uppgifter endast kan utföras med hjälp av tangentbordet.

  2. Om du vill testa stöd för Högkontrast väljer du ikonen Hjälpmedelsalternativ på Kontrollpanelen. Klicka på fliken Visa och markera kryssrutan Använd högkontrast. Navigera genom alla användargränssnittselement för att se till att färg- och teckensnittsändringarna återspeglas. Se också till att bilder eller mönster som ritas bakom text utelämnas.

    Not

    Windows NT 4 har ingen ikon för hjälpmedelsalternativ på Kontrollpanelen. Den här proceduren för att ändra inställningen SystemInformation.HighContrast fungerar alltså inte i Windows NT 4.

  3. Andra verktyg är lättillgängliga för att testa tillgängligheten för ett program.

  4. Om du vill testa hur du exponerar tangentbordsfokuset kör du Magnifier. (Om du vill öppna den klickar du på menyn Starta, pekar på Program, pekar på Tillbehör, pekar på Hjälpmedeloch klickar sedan på Förstoringsglas). Navigera i användargränssnittet med hjälp av både tangentbordstabbning och musen. Kontrollera att all navigering spåras korrekt i Förstorare.

  5. Om du vill testa att exponera skärmelement kör du Inspektera och använder både musen och TAB-tangenten för att nå varje element. Se till att informationen som visas i fälten Namn, Tillstånd, Roll, Plats och Värde i fönstret Inspektera är meningsfull för användaren för varje objekt i användargränssnittet.