Udostępnij przez


Przewodnik: tworzenie dostępnej aplikacji opartej na systemie Windows

Tworzenie dostępnej aplikacji ma ważne konsekwencje biznesowe. Wiele rządów ma przepisy dotyczące ułatwień dostępu do zakupu oprogramowania. Logo Certyfikowane dla systemu Windows zawiera wymagania dotyczące ułatwień dostępu. Szacuje się, że 30 milionów mieszkańców samych STANÓW Zjednoczonych, wielu z nich potencjalnych klientów, ma wpływ na dostępność oprogramowania.

Ten przewodnik będzie dotyczył pięciu wymagań dotyczących ułatwień dostępu dla logo certyfikowanego dla systemu Windows. Zgodnie z tymi wymaganiami aplikacja dostępna będzie:

  • Obsługa ustawień panelu sterowania, koloru, czcionki i danych wejściowych. Pasek menu, pasek tytułu, obramowania i pasek stanu zmieni się, gdy użytkownik zmieni ustawienia panelu sterowania. W tej aplikacji nie są wymagane żadne dodatkowe zmiany kontrolek ani kodu.

  • Obsługa trybu dużego kontrastu.

  • Zapewnij udokumentowany dostęp za pomocą klawiatury do wszystkich funkcji.

  • Uwidocznij wizualnie i programowo lokalizację fokusu klawiatury.

  • Unikaj przekazywania ważnych informacji przez sam dźwięk.

Aby uzyskać więcej informacji, zobacz Zasoby do projektowania aplikacji dostępnych.

Aby uzyskać informacje na temat obsługi różnych układów klawiatury, zobacz Best Practices for Developing World-Ready Applications.

Tworzenie projektu

Ten przewodnik tworzy interfejs użytkownika dla aplikacji, która pobiera zamówienia na pizzę. Składa się z TextBox dla nazwy klienta, grupy RadioButton do wybrania rozmiaru pizzy, CheckedListBox do wyboru dodatków, dwóch kontrolek Przycisk oznaczonych etykietą Zamów i Anuluj oraz Menu z poleceniem Zakończ.

Użytkownik wprowadza nazwę klienta, rozmiar pizzy i żądane dodatki. Gdy użytkownik kliknie przycisk Zamówienie, podsumowanie zamówienia i jego koszt są wyświetlane w oknie komunikatu, a kontrolki są wyczyszczone i gotowe do następnego zamówienia. Gdy użytkownik kliknie przycisk Anuluj, kontrolki zostaną wyczyszczone i gotowe do następnego zamówienia. Gdy użytkownik kliknie element menu Zakończ, program zostanie zamknięty.

Celem tego przewodnika nie jest kod systemu zamówień detalicznych, ale dostępność interfejsu użytkownika. Przewodnik przedstawia funkcje ułatwień dostępu kilku często używanych kontrolek, w tym przycisków, przycisków radiowych, pól tekstowych i etykiet.

Aby rozpocząć tworzenie aplikacji

Dodawanie kontrolek do formularza

Podczas dodawania kontrolek do formularza należy pamiętać o następujących wytycznych, aby udostępnić aplikację:

  • Ustaw właściwości AccessibleDescription i AccessibleName. W tym przykładzie ustawienie domyślne dla AccessibleRole jest wystarczające. Aby uzyskać więcej informacji na temat właściwości ułatwień dostępu, zobacz Zapewnianie informacji o ułatwieniach dostępu dla kontrolek w formularzu systemu Windows.

  • Ustaw rozmiar czcionki na 10 punktów lub większych.

    Uwaga / Notatka

    Jeśli podczas uruchamiania ustawisz rozmiar czcionki formularza na 10, wszystkie kontrolki dodane następnie do formularza będą miały rozmiar czcionki 10.

  • Upewnij się, że każda kontrolka Etykiety opisująca kontrolkę TextBox bezpośrednio poprzedza ją w kolejności tabulacji.

  • Dodaj klucz dostępu przy użyciu znaku "&" do właściwości Text dowolnej kontrolki, do której użytkownik może chcieć przejść.

  • Dodaj klucz dostępu przy użyciu znaku "&" do właściwości Text etykiety, która poprzedza kontrolkę, do której użytkownik może chcieć przejść. Ustaw właściwość UseMnemonic etykiet na true, aby po naciśnięciu klawisza dostępu fokus był ustawiony na następną kontrolkę w kolejności tabulacji.

  • Dodaj klucze dostępu do wszystkich elementów menu.

Aby aplikacja systemu Windows była dostępna

  • Dodaj kontrolki do formularza i ustaw właściwości zgodnie z poniższym opisem. Zobacz obraz na końcu tabeli, aby zapoznać się z modelem sposobu rozmieszczania kontrolek w formularzu.

    Przedmiot Majątek Wartość
    Formularz1 Opis dostępności Formularz zamówienia
    NazwaDostępna Formularz zamówienia
    Rozmiar czcionki 10
    Tekst Formularz zamówienia pizzy
    PictureBox Nazwa logotyp
    Opis dostępności Kawałek pizzy
    NazwaDostępna Logo firmy
    Obraz Dowolna ikona lub mapa bitowa
    Etykieta Nazwa etykieta firmy
    Tekst Dobra pizza
    TabIndex 1
    Opis dostępności Nazwa firmy
    NazwaDostępna Nazwa firmy
    Kolor tła Niebieski
    Kolor pierwszoplanowy Żółty
    Rozmiar czcionki 18
    Etykieta Nazwa etykieta klienta
    Tekst &nazwa
    TabIndex 2
    Opis dostępności Etykieta nazwy klienta
    NazwaDostępna Etykieta nazwy klienta
    UseMnemonic Prawda
    Pole tekstowe Nazwa NazwaKlienta
    Tekst (brak)
    TabIndex 3
    Opis dostępności Nazwa klienta
    NazwaDostępna Nazwa klienta
    Ramka grupy Nazwa opcje rozmiaru
    Opis dostępności Opcje rozmiaru pizzy
    NazwaDostępna Opcje rozmiaru pizzy
    Tekst Rozmiar pizzy
    TabIndex 4
    Przycisk radiowy Nazwa smallPizza
    Tekst &Mały 6,00 USD
    Sprawdzane Prawda
    TabIndex 0
    Opis dostępności Mała pizza
    NazwaDostępna Mała pizza
    Przycisk radiowy Nazwa largePizza
    Tekst &duże 10 zł
    TabIndex 1
    Opis dostępności Duża pizza
    NazwaDostępna Duża pizza
    Etykieta Nazwa etykieta dodatków
    Tekst &toppings (0,75 USD każdy)
    Indeks zakładki 5
    Opis dostępności Etykieta dodatków
    NazwaDostępna Etykieta dodatków
    UseMnemonic Prawda
    Pole listy kontrolnej Nazwa Polewy
    TabIndex 6
    Opis dostępności Dostępne dodatki
    NazwaDostępna Dostępne dodatki
    Przedmioty Pepperoni, kiełbasa, grzyby
    Przycisk Nazwa porządek
    Tekst &Zamówienie
    TabIndex 7
    Opis dostępności Łączna liczba zamówień
    NazwaDostępna Łączna kolejność
    Przycisk Nazwa Anuluj
    Tekst &Anuluj
    TabIndex 8
    Opis dostępności Anulowanie zamówienia
    NazwaDostępna Anulowanie zamówienia
    Menu Główne Nazwa GłówneMenu
    MenuItem Nazwa komendy plikowe
    Tekst plik &
    MenuItem Nazwa zamknijAplikację
    Tekst E&Wyjście

    Formularz będzie wyglądać podobnie do poniższego obrazu:

    Formularz zamówienia pizzy z polem na imię, wyborem rozmiaru i dodatków.

Obsługa trybu dużego kontrastu

Tryb dużego kontrastu to ustawienie systemu Windows, które zwiększa czytelność przy użyciu kontrastujących kolorów i rozmiarów czcionek, które są korzystne dla użytkowników niedowidzących. Właściwość HighContrast jest udostępniana w celu określenia, czy jest ustawiony tryb wysokiego kontrastu.

Jeśli element SystemInformation.HighContrast jest true, aplikacja powinna:

  • Wyświetlanie wszystkich elementów interfejsu użytkownika przy użyciu schematu kolorów systemu

  • Przekazuj informacje przekazywane za pomocą koloru również za pomocą wizualnych lub dźwiękowych wskazówek. Jeśli na przykład określone elementy listy są wyróżnione przy użyciu czerwonej czcionki, możesz również dodać pogrubienie do czcionki, aby użytkownik miał niekolorowy sygnał, że elementy są wyróżnione.

  • Pomiń wszystkie obrazy lub wzorce za tekstem

Aplikacja powinna sprawdzić ustawienie HighContrast podczas uruchamiania aplikacji i odpowiadania na zdarzenie systemowe UserPreferenceChanged. Zdarzenie UserPreferenceChanged jest wywoływane za każdym razem, gdy wartość HighContrast się zmienia.

W naszej aplikacji jedynym elementem, który nie korzysta z ustawień systemowych dla koloru, jest lblCompanyName. Klasa SystemColors służy do zmiany ustawień kolorów etykiety na kolory systemowe wybrane przez użytkownika.

Aby włączyć tryb dużego kontrastu w skuteczny sposób

  1. Utwórz metodę ustawiania kolorów etykiety na kolory systemowe.

    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. Wywołaj procedurę SetColorScheme w konstruktorze formularza (Public Sub New() w visual basic i public Form1() w języku Visual C#). Aby uzyskać dostęp do konstruktora w Visual Basic, należy rozwinąć region oznaczony jako wygenerowany kod przez Windows Form Designer.

    Public Sub New()
        MyBase.New()
        InitializeComponent()
        SetColorScheme()
    End Sub
    
    public Form1()
    {
        InitializeComponent();
        SetColorScheme();
    }
    
  3. Utwórz procedurę zdarzenia z odpowiednim podpisem, aby odpowiedzieć na zdarzenie 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();
    }
    
  4. Dodaj kod do konstruktora formularza po wywołaniu metody InitializeComponents, aby podłączyć procedurę zdarzenia do zdarzenia systemowego. Ta metoda wywołuje procedurę 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. Dodaj kod do metody Dispose formularza przed wywołaniem metody Dispose klasy bazowej, aby zwolnić zdarzenie po zamknięciu aplikacji. Aby uzyskać dostęp do metody Dispose w języku Visual Basic, należy rozwinąć region opisany etykietą Wygenerowany kod programu Windows Form Designer.

    Uwaga / Notatka

    Kod zdarzenia systemu uruchamia wątek oddzielony od głównej aplikacji. Jeśli nie zwolnisz zdarzenia, kod podłączony do zdarzenia uruchomi się, nawet po zamknięciu programu.

    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. Naciśnij F5, aby uruchomić aplikację.

Przekazywanie ważnych informacji za pomocą środków innych niż dźwięk

W tej aplikacji żadne informacje nie są przekazywane przez dźwięk sam. Jeśli używasz dźwięku w aplikacji, należy również podać informacje w inny sposób.

Aby dostarczyć informacje za pomocą innych środków niż dźwięk

  1. Ustaw pasek tytułu na flash przy użyciu funkcji interfejsu API systemu Windows FlashWindow. Aby zapoznać się z przykładem wywoływania funkcji interfejsu API systemu Windows, zobacz przewodnik : wywoływanie interfejsów API systemu Windows.

    Uwaga / Notatka

    Użytkownik może mieć włączoną usługę Windows SoundSentry, co spowoduje, że okno będzie migać, gdy dźwięki systemowe są odtwarzane przez wbudowany głośnik komputera.

  2. Wyświetl ważne informacje w oknie niemodalnym, aby użytkownik mógł mu odpowiedzieć.

  3. Wyświetl okno komunikatu, które uzyskuje uwagę klawiatury. Unikaj tej metody, gdy użytkownik może pisać.

  4. Wyświetl wskaźnik stanu w obszarze powiadomień o stanie paska zadań. Aby uzyskać szczegółowe informacje, zobacz Dodawanie ikon aplikacji do paska zadań za pomocą składnika NotifyIcon Windows Forms.

Testowanie aplikacji

Przed wdrożeniem aplikacji należy przetestować zaimplementowane funkcje ułatwień dostępu.

Aby przetestować funkcje ułatwień dostępu

  1. Aby przetestować dostęp za pomocą klawiatury, odłącz mysz i przejdź do interfejsu użytkownika dla każdej funkcji przy użyciu tylko klawiatury. Upewnij się, że wszystkie zadania mogą być wykonywane tylko za pomocą klawiatury.

  2. Aby przetestować obsługę dużego kontrastu, wybierz ikonę Opcje ułatwień dostępu w Panelu sterowania. Kliknij kartę Wyświetlanie i zaznacz pole wyboru Użyj dużego kontrastu. Przejdź przez wszystkie elementy interfejsu użytkownika, aby upewnić się, że zmiany koloru i czcionki zostaną odzwierciedlone. Upewnij się również, że pominięto obrazy lub wzorce rysowane za tekstem.

    Uwaga / Notatka

    System Windows NT 4 nie ma ikony Opcje ułatwień dostępu w Panelu sterowania. W związku z tym ta procedura zmiany ustawienia SystemInformation.HighContrast nie działa w systemie Windows NT 4.

  3. Inne narzędzia są łatwo dostępne do testowania ułatwień dostępu aplikacji.

  4. Aby przetestować uwidocznianie fokusu klawiatury, uruchom lupę. (Aby go otworzyć, kliknij menu Start, wskaż polecenie Programy, wskaż polecenie Akcesoria, wskaż polecenie Ułatwienia dostępu, a następnie kliknij przycisk Lupa). Nawiguj po interfejsie użytkownika przy użyciu tabulatorów klawiatury i myszy. Upewnij się, że nawigacja jest prawidłowo śledzona w Lupa.

  5. Aby przetestować uwidacznianie elementów ekranu, uruchom polecenie Inspect i użyj zarówno myszy, jak i TAB, aby dotrzeć do każdego elementu. Upewnij się, że informacje przedstawione w polach Nazwa, Stan, Rola, Lokalizacja i Wartość okna Inspekcja mają znaczenie dla użytkownika dla każdego obiektu w interfejsie użytkownika.