Udostępnij za pośrednictwem


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 Przełącznik
.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 UIA

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ę UIA do kontrolki MonthCalendar. Teraz narzędzia technologii wspomagającej, takie jak Narrator, mogą nawigować po poszczególnych datach w kontrolce.
  • Zaimplementowano obsługę wzorca tekstu dla wszystkich kontrolek opartych na tekście, w tym kontrolek TextBox, MaskedTextBox, PropertyGrid, kontroli edycji, DataGridViewTextBoxCell, ToolStripTextBox i 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. Podpowiedzi, które pozostają widoczne, można zamknąć za pomocą klawisza Esc lub klawisza Ctrl albo przechodząc do kontrolki z inną podpowiedzią.

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 powodował, że DataGridView ignorował ustawienia czcionki w obiekcie DataGridviewCellStyle, jeśli formularz bazowy miał właściwość Font, 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 komórki DataGridViewLinkCell po jej wybraniu.
  • Rozwiązano problem z kontrolkami niestandardowymiDataGridView, gdzie nie były dostarczone ControlType lub LocalizedControlType dla niestandardowych elementów DataGridViewCell.
  • Zaktualizowano współczynnik jasności do wartości 3,5:1 dla ToolStripButton kontrolek z ToolStripRenderMode ustawioną wartością System.
  • Ulepszona nawigacja klawiaturą w ToolStrip, gdy element jest typu 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 .
  • Upewniono się, że drzewo hierarchii UIA dla kontrolki PropertyGrid jest aktualizowane, gdy zostanie rozwinięty złożony wpis, taki 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 sterowania PropertyGrid category.
  • Rozwiązano problem z ComboBox, który mógł spowodować awarię aplikacji w narzędziu Accessibility Insights for Windows.
  • Zaktualizowano kolor obramowania elementu Button , aby mieć większy kontrast w kolorach domyślnych.
  • Włączono technologie wspomagające, aby umożliwić 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 z "Przycisk wydruku" na "Drukuj", aby uniknąć nadmiarowości, gdy czytniki ekranu ogłaszają kontrolkę oraz 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)

Poprawa obsługi dostępnych podpowiedzi

W tej wersji WPF ulepszył doświadczenie użytkownika, zapewniając, że podpowiedź w bieżącym oknie można łatwo zamknąć za pomocą Esc, Ctrl (samo) 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, możliwe do odrzucenia i wyświetlane po najechaniu kursorem.

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

Aktualizacja zbiorcza KB4569746 z 11 sierpnia 2020 r. dla .NET Framework 4.8 obejmuje nowe funkcje ułatwień dostępu w Windows Forms:

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

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

  • Aktualizuje dostępne nazwy elementów wewnętrznych kontrolki PropertyGrid, aby były one poprawnie ogłaszane przez czytniki ekranu.

  • Ustawia właściwości dostępności prostokąta obwiedni dla kontrolek PropertyGridView.

  • Umożliwia czytnikom ekranu poprawne komunikowanie stanu rozwinięcia/zwinęcia komórek pola kombi DataGridView.

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 dodają obsługę LiveRegions i Zdarzeń Powiadomień do wielu powszechnie używanych kontrolek. Dodaje również obsługę etykietek narzędzi, gdy użytkownik przechodzi do kontrolki przy użyciu klawiatury.

Obsługa Live Regions w UIA w etykietach i StatusStrips

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. Może być również przydatne informowanie 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 Twoja aplikacja klasyczna może wykorzystywać nowe zdarzenie powiadomienia UI?.

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%." });
}

Etykietki narzędzi na 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 wersji .NET Framework 4.8, użytkownik klawiatury może wywołać dymek kontrolki, ustawiając fokus na kontrolce przy użyciu klawisza Tab lub klawiszy strzałek z klawiszami modyfikującymi lub bez nich. 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 podpowiedź, gdy użytkownik wybrał przycisk za pomocą klawiatury.

Zrzut ekranu przedstawiający etykietkę narzędzia, gdy użytkownik przechodzi do przycisku za pomocą klawiatury.

Windows Presentation Foundation (WPF)

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

Ekranowe programy narracyjne nie ogłaszają już elementów ze zwiniętą lub ukrytą widocznością

Elementy ze zwiniętą lub ukrytą widocznością nie są już ogłaszane przez czytnik 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 wyborem tekstu bez użycia Adornera

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

Program .NET Framework 4.8 dodaje nową właściwość SelectionTextBrush, która umożliwia deweloperom wybranie określonego pędzla dla zaznaczonego tekstu podczas korzystania z zaznaczenia tekstu bez użycia Adorner. Ta właściwość działa tylko na kontrolkach pochodnych TextBoxBase i kontrolce PasswordBox w aplikacjach WPF z włączonym zaznaczeniem tekstu, które nie jest oparte na Adornerze. 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:

Zrzut ekranu przedstawiający aplikację uruchomioną z wybranymi wyrazami Hello World.

Możesz połączyć użycie właściwości SelectionBrush i SelectionTextBrush, aby wygenerować dowolną kombinację kolorów tła i pierwszego planu, którą uznasz za odpowiednią.

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

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. Funkcja ta umożliwia kontrolkom dostarczanie wartości dla właściwości ControllerFor.

Program .NET Framework 4.8 dodaje nową metodę wirtualną. GetControlledPeersCore() Aby podać wartość właściwości ControllerFor, wystarczy przesłonić tę metodę i zwrócić element List<AutomationPeer> dla kontrolek manipulowanych przez AutomationPeer.

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;
   }
}

Podpowiedzi podczas używania 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 obsługiwać wersję 4.8 platformy .NET Framework lub można ją włączyć za pomocą przełączników Switch.UseLegacyAccessibilityFeatures.3 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 etykietę narzędziową wyświetlają ją, gdy kontrolka otrzymuje fokus klawiatury. 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 / Notatka

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ę dla atrybutów SizeOfSet i PositionInSet w UIAutomation

System Windows 10 wprowadził dwie nowe właściwości SizeOfSet i PositionInSet UIAutomation, które są używane przez aplikacje do opisywania liczby elementów w zestawie. Aplikacje klienckie UIAutomation, takie jak czytniki ekranu, mogą następnie wysyłać zapytania o te właściwości i dokładnie przedstawiać interfejs użytkownika aplikacji.

Począwszy od programu .NET Framework 4.8, WPF udostępnia te dwie właściwości dla UIAutomation 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 zależności AutomationProperties.SizeOfSet 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>
    
  • Poprzez zastąpienie wirtualnych metod AutomationPeer.

    Metody GetSizeOfSetCore() i GetPositionInSetCore() zostały dodane do klasy AutomationPeer. Deweloper może podać wartości dla SizeOfSet i PositionInSet przez przesłonięcie 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 automatycznie zapewniają wartość tych właściwości bez dodatkowego działania ze strony 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 skończony, nadal jest wliczany do całkowitego rozmiaru zestawu i wpływa na pozycję w zestawie względem innych elementów.

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 funkcji przepływu pracy wprowadza następujące zmiany w .NET Framework 4.8:

  • Użytkownicy korzystający z Narratora zauważą 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 projektanta przepływu pracy i jego kontrolek, takie jak lepsze współczynniki kontrastu między elementami i bardziej zauważalne pola wyboru używane do elementów koncentracji uwagi.

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 w false 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 ToolStripMenuItem ma właściwość Enabled ustawioną na false.

  • Podaje informację zwrotną na temat stanu pola wyboru, gdy właściwość ListView.CheckBoxes jest ustawiona na true.

  • 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

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

  • Elementy podrzędne kontrolki PropertyGrid zwracają wartość IsEnabledProperty dla właściwości false 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 sprawić, że wizualizacja fokusu będzie trudna do zauważenia.

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 przejść z warstwy WinForms za pomocą klawisza Tab, jeśli pierwszą lub ostatnią kontrolką w tej warstwie była kontrolka WPF ElementHost. W .NET Framework 4.7.2 użytkownicy mogą teraz przechodzić za pomocą klawisza Tab poza warstwę WinForms.

Jednak zautomatyzowane aplikacje, które opierają się na tym, że fokus nie opuszcza warstwy 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 .NET Framework 4.7 i starszych wersjach kontrolki Expander były interpretowane przez czytniki 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 były odczytywane przez czytniki 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 ekranu informują o nazwie edytowalnego elementu ComboBox.

  • 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 ekranu, takie jak Narrator, pomagają użytkownikom w odczytywaniu treści interfejsu aplikacji, zazwyczaj poprzez wykorzystanie technologii zamiany tekstu na mowę dla elementów, które są obecnie w centrum uwagi. 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. "Interaktywne regiony 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 ulegają zmianie i musisz poinformować czytnik ekranu, jawnie zgłaszasz 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 .NET Framework 4.7.1, w trybie wysokiego kontrastu wprowadzono ulepszenia do różnych kontrolek WPF. Są one teraz widoczne po ustawieniu motywu HighContrast . Są to:

  • Expander kontrola

    Wizualizacja fokusu dla kontrolki Expander jest teraz widoczna. Wizualizacje klawiatury dla kontrolek ComboBox, ListBox i RadioButton są również widoczne. Przykład:

    Przed:

    Zrzut ekranu przedstawiający kontrolkę ekspandera z fokusem i bez wizualizacji fokusu.

    After:

    Zrzut ekranu przedstawiający kontrolkę ekspandera z fokusem, który pokazuje kropkowaną linię wokół tekstu kontrolki.

  • CheckBox i RadioButton kontrolki

    Tekst w kontrolkach CheckBox i RadioButton jest teraz łatwiejszy do dostrzeżenia po wybraniu w motywach o wysokim kontraście. Przykład:

    Przed:

    Zrzut ekranu przedstawiający przyciski radiowe i przyciski wyboru ze słabą widocznością tekstu w motywach o wysokim kontraście.

    After:

    Zrzut ekranu przedstawiający przyciski radiowe i przyciski sprawdzania z lepszą widocznością tekstu w motywach o wysokim kontraście.

  • ComboBox kontrola

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

    Przed:

    Zrzut ekranu przedstawiający wyłączoną kontrolkę ComboBox z tekstem obramowania i kontrolki w różnych kolorach.

    After:

    Zrzut ekranu przedstawiający wyłączoną kontrolkę ComboBox z obramowaniem tego samego koloru co tekst kontrolki.

    Ponadto nieaktywne i skoncentrowane przyciski używają poprawnego koloru motywu.

    Przed:

    Zrzut ekranu przedstawiający przycisk z szarym tekstem z napisem Focus Me.

    After:

    Zrzut ekranu przedstawiający niebieski przycisk z czarnym tekstem z napisem Focus Me.

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

    Przed:

    Zrzut ekranu przedstawiający kontrolkę ComboBox z niewidoczną strzałką rozwijanej listy.

    After:

    Zrzut ekranu przedstawiający kontrolkę ComBoxBox wyświetlającą strzałkę listy rozwijanej.

  • DataGrid kontrola

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

    Przed:

    Zrzut ekranu przedstawiający strzałkę wskaźnika sortowania przed ulepszeniami.

    After:

    Zrzut ekranu przedstawiający strzałkę wskaźnika sortowania po ulepszeniach.

    Ponadto, w programie .NET Framework 4.7 i starszych wersjach, domyślny styl łącza zmieniał się na nieprawidłowy kolor podczas najechania myszą w trybach wysokiego 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:

    Zrzut ekranu przedstawiający link z napisem Kliknij mnie! w kolorze czerwonym.

    After:

    Zrzut ekranu przedstawiający link z napisem Kliknij mnie! w kolorze żółtym.

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 doświadczenie, uruchom na najnowszej wersji systemu Windows i skorzystaj z najnowszych zmian w systemie operacyjnym, dodając plik o nazwie app.manifest w aplikacji testowej i usunąć 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:

  • Zaznaczenia w MenuStrip elementach są łatwiejsze do zobaczenia.

  • 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. Przykład:

    Przed:

    Zrzut ekranu przedstawiający aplikację, która używa różnych kontrolek działających w trybie dużego kontrastu przed ulepszeniami ułatwień dostępu.

    After:

    Zrzut ekranu przedstawiający aplikację, która używa różnych kontrolek działających w trybie dużego kontrastu po ulepszeniach ułatwień dostępu.

  • 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 dostępności UIAutomation

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 doświadczenie przeglądania 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 list rozwijanych.
  • Zmniejszenie liczby niepotrzebnych tabulatorów.
  • 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 w kreatorze ListView.

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

  • Zmiany w celu ulepszenia doświadczenia nawigacji klawiaturą dla kontrolek, takich jak okno dialogowe Pola w kreatorze Edytuj Pola Pagera kontrolki DataPager, okno dialogowe Konfiguruj obiekt Kontekstu lub okno dialogowe Konfiguruj wybór danych kreatora Konfiguruj źródło 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.

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

Zmiany ułatwień dostępu w projektancie 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 mogą być zwinięte za pomocą klawiatury, gdy są pierwszy raz ustawione jako aktywne.

    • 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 projektanta 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 projektanta przepływu pracy i projektantów działań.

    • Przechodzenie przez pola w działaniach ReceiveReply i SendReply.

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

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

    • Punkty przerwania ustawione w edytorze przepływu pracy.

    • Działania FlowSwitch<T>, FlowDecision, i CorrelationScope.

    • Zawartość Receive aktywności.

    • 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 miejsca docelowe przejść maszyny stanów.

    • 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 Projektancie przepływu pracy.

    • Separator w działaniach Parallel i Pick.

    • Działanie InvokeDelegate .

    • Okno Wybór 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.

    • Ścieżka nawigacyjna w projektancie przepływu pracy.

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

Zobacz także