Co nowego w ułatwieniach dostępu w programie .NET Framework

Program .NET Framework ma na celu zwiększenie dostępności aplikacji dla użytkowników. Funkcje ułatwień dostępu umożliwiają aplikacji zapewnienie odpowiedniego środowiska dla użytkowników technologii asystacyjnych. Począwszy od programu .NET Framework 4.7.1, program .NET Framework zawiera dużą liczbę ulepszeń ułatwień dostępu, które umożliwiają deweloperom tworzenie dostępnych aplikacji.

Przełączniki ułatwień dostępu

Możesz skonfigurować aplikację tak, aby zdecydowała się na funkcje ułatwień dostępu, jeśli jest przeznaczona dla programu .NET Framework 4.7 lub starszej wersji, ale jest uruchomiona w programie .NET Framework 4.7.1 lub nowszym. Możesz również skonfigurować aplikację tak, aby korzystała ze starszych funkcji (i nie korzysta z funkcji ułatwień dostępu), jeśli jest przeznaczona dla programu .NET Framework 4.7.1 lub nowszego. Każda wersja programu .NET Framework zawierająca funkcje ułatwień dostępu ma przełącznik ułatwień dostępu specyficzny dla wersji, który można dodać do <AppContextSwitchOverrides> elementu w <runtime> sekcji pliku konfiguracji aplikacji. Poniżej przedstawiono obsługiwane przełączniki:

Wersja Switch
.NET Framework 4.7.1 "Switch.UseLegacyAccessibilityFeatures"
.NET Framework 4.7.2 "Switch.UseLegacyAccessibilityFeatures.2"
.NET Framework 4.8 "Switch.UseLegacyAccessibilityFeatures.3"
11 sierpnia 2020 r. zbiorcza aktualizacja KB4569746 programu .NET Framework 4.8 "Switch.UseLegacyAccessibilityFeatures.4"
.NET Framework 4.8.1 "Switch.UseLegacyAccessibilityFeatures.5"

Korzystanie z ulepszeń ułatwień dostępu

Nowe funkcje ułatwień dostępu są domyślnie włączone dla aplikacji przeznaczonych dla programu .NET Framework 4.7.1 lub nowszego. Ponadto aplikacje przeznaczone dla starszej wersji programu .NET Framework, ale działają w programie .NET Framework 4.7.1 lub nowszym, mogą zrezygnować ze starszych zachowań ułatwień dostępu (a tym samym korzystać z ulepszeń ułatwień dostępu), dodając przełączniki do <AppContextSwitchOverrides> elementu w <runtime> sekcji pliku konfiguracji aplikacji i ustawiając ich wartość na false. Poniższy fragment kodu pokazuje, jak wyrazić zgodę na ulepszenia ułatwień dostępu wprowadzone w programie .NET Framework 4.7.1:

<runtime>
    <!-- AppContextSwitchOverrides value attribute is in the form of key1=true|false;key2=true|false  -->
    <AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false" />
</runtime>

Jeśli zdecydujesz się na korzystanie z funkcji ułatwień dostępu w nowszej wersji programu .NET Framework, musisz również jawnie wyrazić zgodę na funkcje z wcześniejszych wersji. Aby skonfigurować aplikację do korzystania z ulepszeń ułatwień dostępu zarówno w programie .NET Framework 4.7.1, jak i 4.7.2, dodaj następujący <AppContextSwitchOverrides> element:

<runtime>
    <!-- AppContextSwitchOverrides value attribute is in the form of key1=true|false;key2=true|false  -->
    <AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false" />
</runtime>

Aby skonfigurować aplikację do korzystania z ulepszeń ułatwień dostępu w programie .NET Framework 4.7.1, 4.7.2, 4.8 i aktualizacji zbiorczej programu .NET Framework 4.8 z sierpnia 2020 r., dodaj następujący <AppContextSwitchOverrides> element:

<runtime>
    <!-- AppContextSwitchOverrides value attribute is in the form of key1=true|false;key2=true|false  -->
    <AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false;Switch.UseLegacyAccessibilityFeatures.3=false;Switch.UseLegacyAccessibilityFeatures.4=false"/>
</runtime>

Przywracanie starszego zachowania

Aplikacje przeznaczone dla wersji programu .NET Framework, począwszy od wersji 4.7.1, mogą wyłączać funkcje ułatwień dostępu, dodając przełączniki do <AppContextSwitchOverrides> elementu w <runtime> sekcji pliku konfiguracji aplikacji i ustawiając ich wartość na true. Na przykład następująca konfiguracja zrezygnowała z funkcji ułatwień dostępu wprowadzonych w programie .NET Framework 4.7.2:

<runtime>
    <!-- AppContextSwitchOverrides value attribute is in the form of key1=true|false;key2=true|false  -->
    <AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures.2=true" />
</runtime>

Co nowego w ułatwieniach dostępu w programie .NET Framework 4.8.1

Program .NET Framework 4.8.1 zawiera nowe funkcje ułatwień dostępu w następujących obszarach:

Windows Forms

Dodano i ulepszono reprezentacje interfejsu użytkownika

Przed programem .NET Framework 4.8.1 w systemie Windows Forms brakuje obsługi szeregu wzorców UIA w celu obsługi technologii pomocniczej do interakcji z aplikacjami. Ten niedobór może spowodować, że Narrator lub inni czytelnicy zawartości ekranu będą zgłaszać niekompletne lub nieprawidłowe informacje. Może to również mieć wpływ na ważne funkcje, takie jak przenoszenie kursora przez tekst w kontrolce TextBox . W programie .NET Framework 4.8.1 zaimplementowano wszystkie wymagane wzorce dla typowych kontrolek. Ta nowa funkcja zapewnia użytkownikom technologii pomocniczej znacznie bogatsze środowisko interakcji z aplikacjami.

  • Dodano obsługę wzorca rozwijania/zwijania interfejsu użytkownika do kontrolki DateTimePicker .
  • Dodano obsługę interfejsu użytkownika do kontrolki MonthCalendar . Teraz narzędzia technologii pomocniczej, takie jak Narrator, mogą przechodzić przez poszczególne daty w kontrolce.
  • Zaimplementowano obsługę wzorca tekstu dla wszystkich kontrolek opartych na tekście, w tym TextBoxkontrolek , MaskedTextBox, PropertyGrid , edycji , DataGridViewTextBoxCellToolStripTextBoxi DomainUpDown .
  • ToolTip Teraz postępuje zgodnie z wytycznymi WCAG2.1, aby być trwałym, odrzucalnym i unoszącym się w systemie Windows 11. Zmiany zachowania etykietki narzędzi są ograniczone do systemów Windows 11 z zainstalowanym programem .NET Framework 4.8.1 i mają zastosowanie tylko do aplikacji, w których limit czasu nie został ustawiony dla etykietki narzędzia. Etykietki narzędzi, które są utrwalane, można odrzucić za pomocą klawisza Esc lub klawisza Ctrl lub przechodząc do kontrolki z innym zestawem etykietek narzędzi.

Różne poprawki błędów dla istniejących funkcji ułatwień dostępu

  • Narrator może teraz skupić się na pustej DataGridView kontrolce.
  • Rozwiązano problem, który spowodował, że czytniki zawartości ekranu zliczyły ukryte kolumny podczas ogłaszania liczby kolumn w kontrolce DataGridView .
  • Rozwiązano problem, który spowodował DataGridView ignorowanie ustawień czcionki ustawionych w obiekcie , DataGridviewCellStyle jeśli formularz bazowy miał Font właściwość, która różniła się od DefaultFont.
  • Zaktualizowano AccessibleName właściwość DataGridView wewnętrznych pasków przewijania kontrolki, aby usunąć tekst "ScrollBar".
  • Naprawiono kolor DataGridViewLinkCell elementu po wybraniu komórki.
  • Rozwiązano problem z kontrolkami niestandardowymiDataGridView, który polegał na tym, że nie ControlType było żadnych elementów niestandardowych DataGridViewCell ani LocalizedControlType nie podano ich.
  • Zaktualizowano współczynnik jasności do wartości 3,5:1 dla ToolStripButton kontrolek z ToolStripRenderMode ustawioną wartością System.
  • Ulepszona nawigacja ToolStrip za pomocą klawiatury w przypadku, gdy element jest typem ToolStripComboBox .
  • Zaktualizowano kolor ToolStripButton tła w trybie dużego kontrastu.
  • Upewnij się, że istnieje prostokąt ograniczenia zgłoszony do technologii pomocniczej dla elementu ToolStripSeparator.
  • Rozwiązano problem, który mógł spowodować awarię czytnika ekranu JAWS podczas odczytywania kontrolki PropertyGrid .
  • Upewnij się, że drzewo hierarchii UIA dla PropertyGrid kontrolki jest aktualizowane po rozwinięciu złożonego wpisu, takiego jak Font . Upewnij się również, że drzewo jest prawidłowo aktualizowane, gdy wpis zostanie zwinięty i nie będzie już widoczny.
  • PropertyGrid kategorie mają teraz zlokalizowany typ kontrolki PropertyGrid category.
  • Rozwiązano problem z ComboBox tym, który mógł spowodować awarię aplikacji w obszarze Ułatwienia dostępu Szczegółowe informacje dla systemu Windows.
  • Zaktualizowano kolor obramowania elementu Button , aby mieć większy kontrast w kolorach domyślnych.
  • Włączone narzędzia technologiczne ułatwiające dostęp do ControlBox przycisków zmaksymalizowanego formularza podrzędnego MDI.
  • Właściwość AccessibleName kontrolki DomainUpDown ma nową wartość domyślną pustego ciągu. Pusty ciąg zachęci deweloperów do utworzenia znaczącej nazwy zamiast akceptowania poprzedniej niepustej wartości domyślnej.
  • Zaktualizowano właściwość przycisku Drukuj AccessibleName w PrintPreviewDialog obszarze "Przycisk wydruku" na "Drukuj", aby uniknąć nadmiarowości, gdy czytniki zawartości ekranu ogłaszają kontrolkę i jej typ.
  • Zaktualizowano kontrolki listy UIA, aby usunąć pusty element listy, gdy PropertyGrid komórka typu ComboBox jest zamknięta i nie jest już widoczna.

Windows Presentation Foundation (WPF)

Ulepszenia obsługi dostępnej etykietki narzędzi

W tej wersji WPF ulepszył środowisko, zapewniając, że etykietka narzędzia w bieżącym oknie można łatwo odrzucić za pomocą klawisza Esc, klawisza Ctrl (samodzielnie) lub kombinacji Ctrl+Shift+F10. Zakres klucza Esc został zmniejszony w tej wersji, aby zastosować go tylko do bieżącego okna, gdy wcześniej zastosowano go do dowolnej otwartej etykietki narzędzia w aplikacji. Domyślnie etykietki narzędzi WPF będą zgodne z wytycznymi WCAG2.1, które mają być trwałe, odrzucane i możliwe do aktywowania.

Co nowego w ułatwieniach dostępu w aktualizacji zbiorczej programu .NET Framework 4.8 z 11 sierpnia 2020 r.

Aktualizacja zbiorcza programu .NET Framework 4.8 z 11 sierpnia 202 KB4569746 0 r. obejmuje nowe funkcje ułatwień dostępu w formularzach systemu Windows:

  • Rozwiązuje problem z ogłaszaniem PropertyGrid elementów kontrolek i rozwiniętym/zwiniętym stanem kategorii przez czytniki zawartości ekranu.

  • Aktualizacje dostępne wzorce kontrolki PropertyGrid i jej elementów wewnętrznych.

  • Aktualizacje dostępne nazwy PropertyGrid elementów wewnętrznych kontrolki, dzięki czemu są one poprawnie ogłaszane przez czytniki zawartości ekranu.

  • Adresy ograniczenia prostokąta dostępne właściwości dla PropertyGridView kontrolek.

  • Umożliwia czytnikom zawartości ekranu poprawne ogłaszanie rozwiniętego/zwiniętego DataGridView stanu komórek pola kombi.

Co nowego w ułatwieniach dostępu w programie .NET Framework 4.8

Program .NET Framework 4.8 zawiera nowe funkcje ułatwień dostępu w następujących obszarach:

Windows Forms

W programie .NET Framework 4.8 formularze systemu Windows dodaje obsługę zdarzeń LiveRegions i Powiadomień do wielu powszechnie używanych kontrolek. Dodaje również obsługę narzędzia Wskazówki gdy użytkownik przechodzi do kontrolki przy użyciu klawiatury.

Obsługa regionów liveregionów interfejsu UIA w obszarze Etykiety i stanyStrips

UIA LiveRegions umożliwiają deweloperom aplikacji powiadamianie czytników zawartości ekranu o zmianie tekstu w kontrolce znajdującej się poza lokalizacją, w której pracuje użytkownik. Jest to przydatne, na przykład w przypadku StatusStrip kontrolki, która pokazuje stan połączenia. Jeśli połączenie zostanie przerwane i zmieni się stan, deweloper może chcieć powiadomić czytnik zawartości ekranu.

Począwszy od programu .NET Framework 4.8, windows Forms implementuje UIA LiveRegions dla kontrolek Label i StatusStrip . Na przykład poniższy kod używa elementu LiveRegion w kontrolce Label o nazwie label1:

public Form1()
{
   InitializeComponent();
   label1.AutomationLiveSetting = AutomationLiveSetting.Polite;
}

…
Label1.Text = "Ready!";

Narrator ogłasza komunikat "Ready" niezależnie od tego, gdzie użytkownik wchodzi w interakcję z aplikacją.

Możesz również zaimplementować element UserControl jako LiveRegion:

using System;
using System.Windows.Forms;
using System.Windows.Forms.Automation;

namespace WindowsFormsApplication
{
   public partial class UserControl1 : UserControl, IAutomationLiveRegion
   {
      public UserControl1()
      {
         InitializeComponent();
      }

      public AutomationLiveSetting AutomationLiveSetting { get; set; }
      private AutomationLiveSetting IAutomationLiveRegion.GetLiveSetting()
      {
         return this.AutomationLiveSetting;
      }

      protected override void OnTextChanged(EventArgs e)
      {
         base.OnTextChanged(e);
         AutomationNotifications.UiaRaiseLiveRegionChangedEvent(this.AccessibilityObject);
      }
   }
}

Zdarzenia powiadomień UIA

Zdarzenie powiadomienia UIA wprowadzone w aktualizacji Fall Creators Update systemu Windows 10 umożliwia aplikacji zgłaszanie zdarzenia UIA, co prowadzi narratora po prostu do ogłoszenia na podstawie tekstu dostarczanego ze zdarzeniem, bez konieczności posiadania odpowiedniej kontroli w interfejsie użytkownika. W niektórych scenariuszach jest to prosty sposób na znaczne zwiększenie dostępności aplikacji. W programie może być również przydatne powiadamianie o postępie niektórych procesów, które mogą zająć dużo czasu. Aby uzyskać więcej informacji na temat zdarzeń powiadomień UIA, zobacz Czy aplikacja klasyczna może korzystać z nowego zdarzenia powiadomienia interfejsu użytkownika?.

W poniższym przykładzie jest wywoływane zdarzenie Powiadomienia:

MethodInfo raiseMethod = typeof(AccessibleObject).GetMethod("RaiseAutomationNotification");
if (raiseMethod != null) {
   raiseMethod.Invoke(progressBar1.AccessibilityObject, new object[3] {/*Other*/ 4, /*All*/ 2, "The progress is 50%." });
}

Narzędzie Wskazówki przy dostępie za pomocą klawiatury

W aplikacjach przeznaczonych dla programu .NET Framework 4.7.2 i starszych wersji etykietka narzędzia sterującego może zostać wyzwolona tylko przez przeniesienie wskaźnika myszy do kontrolki. Począwszy od programu .NET Framework 4.8, użytkownik klawiatury może wyzwolić etykietkę narzędzia kontrolki, koncentrując się na kontrolce przy użyciu klawisza Tab lub klawiszy strzałek z klawiszami modyfikując lub bez klawiszy modyfikując. To szczególne rozszerzenie ułatwień dostępu wymaga dodatkowego przełącznika AppContext:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
   <startup>
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
   </startup>
   <runtime>
      <!-- AppContextSwitchOverrides values are in the form of key1=true|false;key2=true|false  -->
      <!-- Please note that disabling Switch.UseLegacyAccessibilityFeatures, Switch.UseLegacyAccessibilityFeatures.2 and Switch.UseLegacyAccessibilityFeatures.3 is required to disable Switch.System.Windows.Forms.UseLegacyToolTipDisplay -->
      <AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false;Switch.UseLegacyAccessibilityFeatures.3=false;Switch.System.Windows.Forms.UseLegacyToolTipDisplay=false"/>
   </runtime>
</configuration>

Na poniższej ilustracji przedstawiono etykietkę narzędzia, gdy użytkownik wybrał przycisk za pomocą klawiatury.

Screenshot of tooltip when user navigates to button with the keyboard.

Windows Presentation Foundation (WPF)

Począwszy od programu .NET Framework 4.8, WPF zawiera szereg ulepszeń ułatwień dostępu.

Narratorzy ekranu nie ogłaszają już elementów z zwiniętym lub ukrytym widocznością

Elementy z zwiniętym lub ukrytym widocznością nie są już ogłaszane przez czytnik zawartości ekranu. Interfejsy użytkownika zawierające elementy z widocznością Visibility.Collapsed lub Visibility.Hidden mogą być błędnie reprezentowane przez czytniki zawartości ekranu, jeśli zostaną one ogłoszone użytkownikowi. Począwszy od programu .NET Framework 4.8, WPF nie zawiera już zwiniętych lub ukrytych elementów w widoku sterowania drzewa UIAutomation, dzięki czemu czytniki zawartości ekranu nie mogą już ogłaszać tych elementów.

Właściwość SelectionTextBrush do użycia z zaznaczonym tekstem nienależącym do Adornera

W programie .NET Framework 4.7.2 WPF dodano możliwość rysowania TextBox i PasswordBox zaznaczenia tekstu bez używania warstwy Adorner. Kolor pierwszego planu zaznaczonego tekstu w tym scenariuszu został podyktowany przez .SystemColors.HighlightTextBrush

Program .NET Framework 4.8 dodaje nową właściwość , SelectionTextBrushktóra umożliwia deweloperom wybranie określonego pędzla dla zaznaczonego tekstu podczas korzystania z zaznaczenia tekstu innego niż Adorner. Ta właściwość działa tylko na TextBoxBasekontrolkach pochodnych i PasswordBox kontrolce w aplikacjach WPF z włączonym zaznaczeniem tekstu nienależącym do Adornera. Nie działa w kontrolce RichTextBox . Jeśli nie włączono zaznaczenia tekstu nienależące do modułu adoratora, ta właściwość jest ignorowana.

Aby użyć tej właściwości, po prostu dodaj ją do kodu XAML i użyj odpowiedniego pędzla lub powiązania. Wynikowy wybór tekstu wygląda następująco:

Screenshot of the app running with the words Hello World selected.

Możesz połączyć użycie SelectionBrush właściwości i SelectionTextBrush w celu wygenerowania dowolnej kombinacji kolorów tła i pierwszego planu, które uznasz za odpowiednie.

Obsługa właściwości UIAutomation ControllerFor

Właściwość UIAutomation ControllerFor zwraca tablicę elementów automatyzacji, które są manipulowane przez element automatyzacji, który obsługuje tę właściwość. Ta właściwość jest często używana w przypadku ułatwień dostępu sugerowanych automatycznie. ControllerFor jest używany, gdy element automatyzacji wpływa na co najmniej jeden segment interfejsu użytkownika aplikacji lub pulpitu. W przeciwnym razie trudno jest skojarzyć wpływ operacji sterowania z elementami interfejsu użytkownika. Ta funkcja dodaje możliwość zapewniania wartości właściwości przez kontrolki ControllerFor .

Program .NET Framework 4.8 dodaje nową metodę wirtualną. GetControlledPeersCore() Aby podać wartość właściwości ControllerFor , po prostu przesłoń tę metodę i zwróć element List<AutomationPeer> dla kontrolek, które są manipulowane przez następujące AutomationPeerpolecenie :

public class AutoSuggestTextBox: TextBox
{
   protected override AutomationPeer OnCreateAutomationPeer()
   {
      return new AutoSuggestTextBoxAutomationPeer(this);
   }

   public ListBox SuggestionListBox;
}

internal class AutoSuggestTextBoxAutomationPeer : TextBoxAutomationPeer
{
   public AutoSuggestTextBoxAutomationPeer(AutoSuggestTextBox owner) : base(owner)
   {
   }

   protected override List<AutomationPeer> GetControlledPeersCore()
   {
      List<AutomationPeer> controlledPeers = new List<AutomationPeer>();
      AutoSuggestTextBox owner = Owner as AutoSuggestTextBox;
      controlledPeers.Add(UIElementAutomationPeer.CreatePeerForElement(owner.SuggestionListBox));
      return controlledPeers;
   }
}

Etykietki narzędzi na dostępie za pomocą klawiatury

W programie .NET Framework 4.7.2 i starszych wersjach etykietki narzędzi są wyświetlane tylko wtedy, gdy użytkownik najecha kursorem myszy na kontrolkę. W programie .NET Framework 4.8 etykietki narzędzi są również wyświetlane na fokusie klawiatury, a także za pomocą skrótu klawiaturowego.

Aby włączyć tę funkcję, aplikacja musi być przeznaczona dla programu .NET Framework 4.8 lub wyrazić zgodę przy użyciu Switch.UseLegacyAccessibilityFeatures.3 przełączników i Switch.UseLegacyToolTipDisplayAppContext . Poniżej przedstawiono przykładowy plik konfiguracji aplikacji:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <startup>
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
   </startup>
   <runtime>
      <AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false;Switch.UseLegacyAccessibilityFeatures.3=false;Switch.UseLegacyToolTipDisplay=false" />
   </runtime>
</configuration>

Po włączeniu wszystkie kontrolki zawierające etykietkę narzędzia są wyświetlane po odebraniu fokusu klawiatury przez kontrolkę. Etykietka narzędzia może zostać odrzucona w czasie lub po zmianie fokusu klawiatury. Użytkownicy mogą również ręcznie odrzucić etykietkę narzędzia przy użyciu nowego skrótu klawiaturowego Ctrl+Shift+F10. Po odrzuceniu etykietki narzędzia można ją wyświetlić ponownie za pomocą tego samego skrótu klawiaturowego.

Uwaga

Etykietki narzędzi wstążki na Ribbon kontrolkach nie będą wyświetlane na fokusie klawiatury; są one wyświetlane tylko za pomocą skrótu klawiaturowego.

Dodano obsługę właściwości SizeOfSet i PositionInSet UIAutomation

System Windows 10 wprowadził dwa nowe właściwości SizeOfSet interfejsu użytkownikaAutomation i PositionInSet, które są używane przez aplikacje do opisywania liczby elementów w zestawie. UIAutomation aplikacje klienckie, takie jak czytniki zawartości ekranu, mogą następnie wysyłać zapytania do aplikacji dla tych właściwości i ogłaszać dokładną reprezentację interfejsu użytkownika aplikacji.

Począwszy od programu .NET Framework 4.8, WPF uwidacznia te dwie właściwości w interfejsie użytkownikaAutomation w aplikacjach WPF. Można to zrobić na dwa sposoby:

  • Przy użyciu właściwości zależności.

    WPF dodaje dwie nowe właściwości AutomationProperties.SizeOfSet zależności i AutomationProperties.PositionInSet. Deweloper może użyć języka XAML, aby ustawić swoje wartości:

    <Button AutomationProperties.SizeOfSet="3"
      AutomationProperties.PositionInSet="1">Button 1</Button>
    
    <Button AutomationProperties.SizeOfSet="3"
      AutomationProperties.PositionInSet="2">Button 2</Button>
    
    <Button AutomationProperties.SizeOfSet="3"
      AutomationProperties.PositionInSet="3">Button 3</Button>
    
  • Przez zastąpienie metod wirtualnych AutomationPeer.

    Metody GetSizeOfSetCore() i GetPositionInSetCore() zostały dodane do AutomationPeer klasy . Deweloper może podać wartości i SizeOfSetPositionInSet przez zastąpienie tych metod, jak pokazano w poniższym przykładzie:

    public class MyButtonAutomationPeer : ButtonAutomationPeer
    {
      protected override int GetSizeOfSetCore()
      {
          // Call into your own logic to provide a value for SizeOfSet
          return CalculateSizeOfSet();
      }
    
      protected override int GetPositionInSetCore()
      {
          // Call into your own logic to provide a value for PositionInSet
          return CalculatePositionInSet();
      }
    }
    

Ponadto elementy w ItemsControl wystąpieniach zapewniają wartość tych właściwości automatycznie bez dodatkowej akcji od dewelopera. Jeśli element ItemsControl jest pogrupowany, kolekcja grup jest reprezentowana jako zestaw, a każda grupa jest liczone jako oddzielny zestaw, a każdy element wewnątrz tej grupy zapewnia jego pozycję wewnątrz tej grupy, a także rozmiar grupy. Na wartości automatyczne nie ma wpływu wirtualizacja. Nawet jeśli element nie jest zrealizowany, nadal jest liczone w kierunku całkowitego rozmiaru zestawu i wpływa na pozycję w zestawie elementów równorzędnych.

Wartości automatyczne są udostępniane tylko wtedy, gdy aplikacja jest przeznaczona dla programu .NET Framework 4.8. W przypadku aplikacji przeznaczonych dla starszej wersji programu .NET Framework można ustawić Switch.UseLegacyAccessibilityFeatures.3przełącznik AppContext, jak pokazano w następującym pliku App.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <startup>
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
   </startup>
   <runtime>
      <AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false;Switch.UseLegacyAccessibilityFeatures.3=false" />
   </runtime>
</configuration>

Projektant przepływu pracy programu Windows Workflow Foundation (WF)

Projektant przepływu pracy zawiera następujące zmiany w programie .NET Framework 4.8:

  • Użytkownicy korzystający z Narratora będą widzieć ulepszenia w etykietach przypadków flowSwitch.

  • Użytkownicy korzystający z Narratora zobaczą ulepszenia opisów przycisków.

  • Użytkownicy, którzy wybierają motywy o wysokim kontraście, zobaczą ulepszenia widoczności Projektant przepływu pracy i jego kontrolek, takie jak lepsze proporcje kontrastu między elementami i bardziej zauważalne pola wyboru używane dla elementów fokusu.

Jeśli aplikacja jest przeznaczona dla programu .NET Framework 4.7.2 lub starszej wersji, możesz wyrazić zgodę na te zmiany, ustawiając Switch.UseLegacyAccessibilityFeatures.3przełącznik AppContext na false w pliku konfiguracji aplikacji. Aby uzyskać więcej informacji, zobacz sekcję Korzystanie z ulepszeń ułatwień dostępu w tym artykule.

Co nowego w ułatwieniach dostępu w programie .NET Framework 4.7.2

Program .NET Framework 4.7.2 zawiera nowe funkcje ułatwień dostępu w następujących obszarach:

Windows Forms

Kolory zdefiniowane przez system operacyjny w motywach o wysokim kontraście

Począwszy od programu .NET Framework 4.7.2, formularze systemu Windows używają kolorów zdefiniowanych przez system operacyjny w motywach wysokiego kontrastu. Ma to wpływ na następujące kontrolki:

Ulepszenia narratora

Począwszy od programu .NET Framework 4.7.2, obsługa narratora jest rozszerzona w następujący sposób:

  • Ogłasza wartość ToolStripMenuItem.ShortcutKeys właściwości podczas ogłaszania tekstu elementu ToolStripMenuItem.

  • Wskazuje, kiedy właściwość ma Enabled ustawioną ToolStripMenuItem wartość false.

  • Zwraca on opinię na temat stanu pola wyboru, gdy właściwość jest ustawiona ListView.CheckBoxes na truewartość .

  • Kolejność koncentracji uwagi w trybie skanowania narratora jest zgodna z kolejnością wizualną kontrolek w oknie dialogowym pobierania ClickOnce.

Ulepszenia elementu DataGridView

Począwszy od programu .NET Framework 4.7.2, kontrolka DataGridView wprowadziła następujące ulepszenia ułatwień dostępu:

Ulepszone podpowiedzi wizualne

  • Kontrolki RadioButton i CheckBox z pustą Text właściwością wyświetlają wskaźnik koncentracji uwagi po otrzymaniu fokusu.

Ulepszona obsługa siatki właściwości

  • PropertyGrid Elementy podrzędne kontrolki IsReadOnlyProperty zwracają true teraz element dla właściwości tylko wtedy, gdy element PropertyGrid jest włączony.

  • PropertyGrid Elementy podrzędne kontrolki IsEnabledProperty zwracają false wartość dla właściwości tylko wtedy, gdy użytkownik może zmienić element PropertyGrid.

Ulepszona nawigacja za pomocą klawiatury

Windows Presentation Foundation (WPF)

Zmiany kontrolek CheckBox i RadioButton

W programie .NET Framework 4.7.1 i starszych wersjach kontrolki WPF System.Windows.Controls.CheckBox i System.Windows.Controls.RadioButton mają niespójne motywy oraz w motywach klasycznych i wysokich kontrastów niepoprawne wizualizacje fokusu. Te problemy występują w przypadkach, gdy kontrolki nie mają żadnego zestawu zawartości. Może to utrudnić przejście między motywami i wizualizacją fokusu.

W programie .NET Framework 4.7.2 te wizualizacje są teraz bardziej spójne w motywach i łatwiej widoczne w motywach klasycznych i wysokich kontrastów.

Kontrolki WinForms hostowane w aplikacji WPF

W przypadku kontrolki WinForms hostowanej w aplikacji WPF w programie .NET Framework 4.7.1 i starszych wersjach użytkownicy nie mogli wyprzeć warstwy WinForms, jeśli pierwsza lub ostatnia kontrolka w tej warstwie jest kontrolką WPF ElementHost . W programie .NET Framework 4.7.2 użytkownicy mogą teraz korzystać z warstwy WinForms.

Jednak zautomatyzowane aplikacje, które opierają się na fokusie, nigdy nie uciekają przed warstwą WinForms, mogą przestać działać zgodnie z oczekiwaniami.

Co nowego w ułatwieniach dostępu w programie .NET Framework 4.7.1

Program .NET Framework 4.7.1 zawiera nowe funkcje ułatwień dostępu w następujących obszarach:

Windows Presentation Foundation (WPF)

Ulepszenia czytnika zawartości ekranu

Jeśli włączono ulepszenia ułatwień dostępu, program .NET Framework 4.7.1 zawiera następujące ulepszenia wpływające na czytniki zawartości ekranu:

  • W programie .NET Framework 4.7 i starszych wersjach kontrolki Expander zostały ogłoszone przez czytniki zawartości ekranu jako przyciski. Począwszy od programu .NET Framework 4.7.1, są one poprawnie ogłaszane jako grupy możliwe do rozwinięcia/zwijane.

  • W programie .NET Framework 4.7 i starszych wersjach kontrolki DataGridCell zostały ogłoszone przez czytniki zawartości ekranu jako "niestandardowe". Począwszy od programu .NET Framework 4.7.1, są one teraz poprawnie ogłaszane jako komórka siatki danych (zlokalizowana).

  • Począwszy od programu .NET Framework 4.7.1, czytniki zawartości ekranu ogłaszają nazwę edytowalnego ComboBoxelementu .

  • W programie .NET Framework 4.7 i starszych wersjach kontrolki PasswordBox zostały ogłoszone jako "brak elementu w widoku" lub miały niepoprawne zachowanie. Ten problem został rozwiązany, począwszy od programu .NET Framework 4.7.1.

Obsługa interfejsu użytkownikaAutomation LiveRegion

Czytniki zawartości ekranu, takie jak Narrator, ułatwiają użytkownikom odczytywanie zawartości interfejsu użytkownika aplikacji, zwykle przez dane wyjściowe zamiany tekstu na mowę zawartości interfejsu użytkownika, która ma fokus. Jeśli jednak element interfejsu użytkownika ulegnie zmianie i nie ma fokusu, użytkownik może nie zostać powiadomiony i może przegapić ważne informacje. Regiony na żywo mają na celu rozwiązanie tego problemu. Deweloper może ich używać do informowania czytnika zawartości ekranu lub innego klienta interfejsu użytkownikaAutomation o wprowadzeniu ważnych zmian w elemecie interfejsu użytkownika. Czytnik zawartości ekranu może następnie zdecydować, jak i kiedy poinformować użytkownika o tej zmianie.

Aby obsługiwać regiony na żywo, do WPF dodano następujące interfejsy API:

Możesz utworzyć region LiveRegion, ustawiając właściwość AutomationProperties.LiveSetting na interesującym go elemenie, jak pokazano w poniższym przykładzie:

<TextBlock Name="myTextBlock" AutomationProperties.LiveSetting="Assertive">announcement</TextBlock>

Gdy dane w regionie na żywo zmienią się i musisz poinformować czytnik zawartości ekranu, jawnie zgłosisz zdarzenie, jak pokazano w poniższym przykładzie.

var peer = FrameworkElementAutomationPeer.FromElement(myTextBlock);

peer.RaiseAutomationEvent(AutomationEvents.LiveRegionChanged);
Dim peer = FrameworkElementAutomationPeer.FromElement(myTextBlock)
peer.RaiseAutomationEvent(AutomationEvents.LiveRegionChanged)

Duży kontrast

Począwszy od programu .NET Framework 4.7.1, wprowadzono ulepszenia w dużym kontraście do różnych kontrolek WPF. Są one teraz widoczne po ustawieniu motywu HighContrast . Są to:

  • Expander kontrolka

    Wizualizacja fokusu dla kontrolki Expander jest teraz widoczna. Wizualizacje klawiatury dla ComboBoxListBoxkontrolek i , są RadioButton również widoczne. Na przykład:

    Przed:

    Screenshot of the expander control with focus and no focus visual.

    Po:

    Screenshot of the expander control with focus showing a dotted line around the control's text.

  • CheckBoxkontrolki i RadioButton

    Tekst w kontrolkach i RadioButton jest teraz łatwiejszy do wyświetlenia po wybraniu CheckBox w motywach o wysokim kontraście. Na przykład:

    Przed:

    Screenshot of radio and check buttons with poor text visibility on high contrast themes.

    Po:

    Screenshot of radio and check buttons with better text visibility on high contrast themes.

  • ComboBox kontrolka

    Począwszy od programu .NET Framework 4.7.1, obramowanie wyłączonej ComboBox kontrolki jest tym samym kolorem co wyłączony tekst. Na przykład:

    Przed:

    Screenshot of a disabled ComboBox with border and control text in different colors.

    Po:

    Screenshot of a disabled ComboBox with border the same color as the control text.

    Ponadto przyciski wyłączone i ukierunkowane używają poprawnego koloru motywu.

    Przed:

    Screenshot of a black button with gray text saying Focus Me.

    Po:

    Screenshot of a blue button with black text saying Focus Me.

    Na koniec w programie .NET Framework 4.7 i starszych wersjach ustawienie ComboBox stylu kontrolki spowodowało, że Toolbar.ComboBoxStyleKey strzałka listy rozwijanej będzie niewidoczna. Ten problem został rozwiązany, począwszy od programu .NET Framework 4.7.1. Na przykład:

    Przed:

    Screenshot of a ComboBox control with an invisible drop-down arrow.

    Po:

    Screenshot of a ComBoxBox control displaying the drop-down arrow.

  • DataGrid kontrolka

    Począwszy od programu .NET Framework 4.7.1, strzałka wskaźnika sortowania w DataGrid kontrolkach używa teraz poprawnych kolorów motywu. Na przykład:

    Przed:

    Screenshot of sort indicator arrow before improvements.

    Po:

    Screenshot of sort indicator arrow after improvements.

    Ponadto w programie .NET Framework 4.7 i starszych wersjach domyślny styl łącza został zmieniony na nieprawidłowy kolor myszy w trybach dużego kontrastu. Rozwiązano ten problem, począwszy od programu .NET Framework 4.7.1. DataGrid Podobnie kolumny pól wyboru używają oczekiwanych kolorów dla opinii fokusu klawiatury, począwszy od programu .NET Framework 4.7.1.

    Przed:

    Screenshot of a link saying Click Me! in red.

    Po:

    Screenshot of a link saying Click Me! in yellow.

Aby uzyskać więcej informacji na temat ulepszeń ułatwień dostępu WPF w programie .NET Framework 4.7.1, zobacz Ulepszenia ułatwień dostępu w WPF.

Ulepszenia ułatwień dostępu formularzy systemu Windows

W programie .NET Framework 4.7.1 formularze systemu Windows (WinForms) zawierają zmiany ułatwień dostępu w następujących obszarach.

Ulepszony ekran w trybie dużego kontrastu

Począwszy od programu .NET Framework 4.7.1, różne kontrolki WinForms oferują ulepszone renderowanie w trybach HighContrast dostępnych w systemie operacyjnym. System Windows 10 zmienił wartości niektórych kolorów systemowych o dużym kontraście, a formularze systemu Windows są oparte na strukturze Windows 10 Win32. Aby uzyskać najlepsze środowisko, uruchom polecenie w najnowszej wersji systemu Windows i wybierz najnowsze zmiany systemu operacyjnego, dodając plik app.manifest w aplikacji testowej i usuń komentarz z wiersza obsługiwanego systemu operacyjnego Windows 10, aby wyglądał następująco:

<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />

Oto kilka przykładów zmian o dużym kontraście:

  • Znaczniki wyboru w MenuStrip elementach są łatwiejsze do wyświetlenia.

  • Po wybraniu wyłączone MenuStrip elementy są łatwiejsze do wyświetlenia.

  • Tekst w wybranej Button kontrolce kontrastuje z kolorem zaznaczenia.

  • Wyłączony tekst jest łatwiejszy do odczytania. Na przykład:

    Przed:

    Screenshot of an app that uses different controls running in high contrast mode before accessibility improvements.

    Po:

    Screenshot of an app that uses different controls running in high contrast mode after accessibility improvements.

  • Ulepszenia wysokiego kontrastu w oknie dialogowym Wyjątek wątku.

Ulepszona obsługa narratora

Formularze systemu Windows w programie .NET Framework 4.7.1 zawierają następujące ulepszenia ułatwień dostępu dla Narratora:

  • Dostęp MonthCalendar do kontrolki można uzyskać za pomocą Narratora, a także innych narzędzi automatyzacji interfejsu użytkownika.

  • Kontrolka CheckedListBox powiadamia Narratora o zmianie stanu sprawdzania elementu, aby użytkownik był powiadamiany o zmianie wartości elementu listy.

  • Kontrolka DataGridViewCell zgłasza prawidłowy stan tylko do odczytu narratorowi.

  • Narrator może teraz odczytywać wyłączony ToolStripMenuItem tekst, natomiast wcześniej pomijał wyłączone elementy menu.

Ulepszona obsługa wzorców ułatwień dostępu interfejsu użytkownikaAutomation

Począwszy od programu .NET Framework 4.7.1, deweloperzy narzędzi technologii ułatwień dostępu mogą korzystać z typowych wzorców ułatwień dostępu interfejsu API i właściwości dla kilku kontrolek WinForms. Te ulepszenia ułatwień dostępu obejmują:

Ulepszone środowisko przeglądarki właściwości

Począwszy od programu .NET Framework 4.7.1, formularze systemu Windows obejmują:

  • Lepsza nawigacja za pomocą klawiatury w różnych oknach wyboru listy rozwijanej.
  • Zmniejszenie niepotrzebnej karty zatrzymuje się.
  • Lepsze raportowanie typów kontrolek.
  • Ulepszone zachowanie narratora.

ASP.NET kontrolki sieci Web

Począwszy od programów .NET Framework 4.7.1 i Visual Studio 2017 w wersji 15.3, ASP.NET ulepsza sposób pracy kontrolek internetowych ASP.NET z technologią ułatwień dostępu w programie Visual Studio. Zmiany obejmują następujące elementy:

  • Zmiany w implementacji brakujących wzorców ułatwień dostępu interfejsu użytkownika w kontrolkach, takich jak okno dialogowe Dodawanie pola w kreatorze Widok szczegółów lub okno dialogowe Konfigurowanie widoku listy kreatora ListView.

  • Zmiany w celu ulepszenia wyświetlania w trybie dużego kontrastu, takich jak Edytor pól pagera danych.

  • Zmiany w celu ulepszenia środowisk nawigacji za pomocą klawiatury dla kontrolek, takich jak okno dialogowe Pola w kreatorze Edytowanie pól pagera kontrolki DataPager, okno dialogowe Konfigurowanie obiektuKontekstu lub okno dialogowe Konfigurowanie wyboru danych kreatora Konfigurowanie źródła danych.

Narzędzia zestawu SDK platformy .NET

Narzędzie edytora konfiguracji (SvcConfigEditor.exe) i narzędzie podglądu śledzenia usługi (SvcTraceViewer.exe) zostały ulepszone przez rozwiązywanie różnych problemów z ułatwieniami dostępu. Większość z nich to małe problemy, takie jak nazwa niezdefiniowana lub niektóre wzorce automatyzacji interfejsu użytkownika nie są prawidłowo implementowane. Chociaż wielu użytkowników nie będzie wiedzieć o tych nieprawidłowych wartościach, klienci korzystający z technologii pomocniczych, takich jak czytniki zawartości ekranu, znajdą te narzędzia zestawu SDK bardziej dostępne.

Te ulepszenia zmieniają niektóre poprzednie zachowania, takie jak kolejność koncentracji uwagi klawiatury.

Przepływ pracy programu Windows Workflow Foundation (WF) Projektant

Zmiany ułatwień dostępu w Projektant przepływu pracy obejmują następujące elementy:

  • Kolejność karty zmienia się w lewo do prawej i u góry do dołu w niektórych kontrolkach:

  • Więcej funkcji jest dostępnych za pomocą klawiatury:

    • Podczas edytowania właściwości działania grupy właściwości można zwinąć za pomocą klawiatury po raz pierwszy.

    • Ikony ostrzeżeń są dostępne za pomocą klawiatury.

    • Przycisk Więcej właściwości w oknie Właściwości jest dostępny za pomocą klawiatury.

    • Użytkownicy klawiatury mogą uzyskiwać dostęp do elementów nagłówka w okienkach Argumenty i zmienne Projektant przepływu pracy.

  • Ulepszona widoczność elementów z fokusem, na przykład w następujących przypadkach:

    • Dodawanie wierszy do siatek danych używanych przez projektantów przepływu pracy Projektant i działań.

    • Tabbing through fields in the and ( Tabbing through fields in the and activities ( Tabbing through fields in the ReceiveReply and SendReply activities ( Tabbing

    • Ustawianie wartości domyślnych zmiennych lub argumentów

  • Czytniki zawartości ekranu mogą teraz poprawnie rozpoznać:

    • Punkty przerwania ustawione w projektancie przepływu pracy.

    • Działania FlowSwitch<T>, FlowDecisioni CorrelationScope .

    • Zawartość Receive działania.

    • Typ docelowy InvokeMethod działania.

    • Pole kombi Wyjątek i sekcja Finally w TryCatch działaniu.

    • Pole kombi Typ komunikatu, splitter w oknie Dodawanie inicjatorów korelacji, okno Definicja zawartości i okno Koreluj definicję w działaniach obsługi komunikatów (Receive, Send, SendReplyi ReceiveReply).

    • Przejścia i przejścia maszyny stanu.

    • Adnotacje i łączniki dotyczące FlowDecision działań.

    • Menu kontekstowe (kliknij prawym przyciskiem myszy) dla działań.

    • Edytory wartości właściwości, przycisk Wyczyść wyszukiwanie, przyciski Według kategorii i sortowania alfabetycznego oraz okno dialogowe Edytor wyrażeń w siatce właściwości.

    • Procent powiększenia w Projektant przepływu pracy.

    • Separator w Parallel i Pick działania.

    • Działanie InvokeDelegate .

    • Okno Wybieranie typów dla działań słownika (Microsoft.Activities.AddToDictionary<TKey,TValue>, Microsoft.Activities.RemoveFromDictionary<TKey,TValue>itp.).

    • Okno Przeglądaj i Wybierz typ platformy .NET.

    • Linki do stron nadrzędnych w Projektant przepływu pracy.

  • Użytkownicy, którzy wybierają motywy o wysokim kontraście, zobaczą wiele ulepszeń widoczności Projektant przepływu pracy i jego kontrolek, takich jak lepsze proporcje kontrastu między elementami i bardziej zauważalne pola wyboru używane dla elementów fokusu.

Zobacz też