Dela via


Nyheter inom hjälpmedel i .NET Framework

.NET Framework syftar till att göra program mer tillgängliga för dina användare. Med hjälpmedelsfunktioner kan ett program tillhandahålla en lämplig upplevelse för användare av assistiv teknik. Från och med .NET Framework 4.7.1 innehåller .NET Framework ett stort antal hjälpmedelsförbättringar som gör att utvecklare kan skapa tillgängliga program.

Hjälpmedelsväxlar

Du kan konfigurera appen så att den väljer hjälpmedelsfunktioner om den riktar sig till .NET Framework 4.7 eller en tidigare version men körs på .NET Framework 4.7.1 eller senare. Du kan också konfigurera din app att använda äldre funktioner (och inte dra nytta av hjälpmedelsfunktioner) om den riktar sig mot .NET Framework 4.7.1 eller senare. Varje .NET Framework-version som innehåller hjälpmedelsfunktioner har en versionsspecifik hjälpmedelsväxel som du lägger till i elementet <AppContextSwitchOverrides><runtime> i avsnittet i programmets konfigurationsfil. Följande är de växlar som stöds:

Version Växling
.NET Framework 4.7.1 "Switch.UseLegacyAccessibilityFeatures"
.NET Framework 4.7.2 "Switch.UseLegacyAccessibilityFeatures.2"
.NET Framework 4.8 "Switch.UseLegacyAccessibilityFeatures.3"
11 augusti 2020-KB4569746 kumulativ uppdatering för .NET Framework 4.8 "Switch.UseLegacyAccessibilityFeatures.4"
.NET Framework 4.8.1 "Switch.UseLegacyAccessibilityFeatures.5"

Dra nytta av hjälpmedelsförbättringar

De nya hjälpmedelsfunktionerna är aktiverade som standard för program som är avsedda för .NET Framework 4.7.1 eller senare. Dessutom kan program som riktar sig mot en tidigare version av .NET Framework men som körs på .NET Framework 4.7.1 eller senare välja bort äldre hjälpmedelsbeteenden (och därmed dra nytta av hjälpmedelsförbättringar) genom att lägga till växlar till elementet <AppContextSwitchOverrides> i avsnittet i <runtime> programmets konfigurationsfil och ange värdet till false. Följande kodfragment visar hur du väljer hjälpmedelsförbättringar som introducerades i .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>

Om du väljer att välja hjälpmedelsfunktioner i en senare .NET Framework-version måste du också uttryckligen välja att använda funktionerna från tidigare versioner. Lägg till följande <AppContextSwitchOverrides> element för att konfigurera appen för att dra nytta av hjälpmedelsförbättringar i både .NET Framework 4.7.1 och 4.7.2:

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

Lägg till följande <AppContextSwitchOverrides> element för att konfigurera appen för att dra nytta av hjälpmedelsförbättringar i .NET Framework 4.7.1, 4.7.2, 4.8 och den kumulativa uppdateringen för augusti 2020 för .NET Framework 4.8:

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

Återställa äldre beteende

Program som är målversioner av .NET Framework från och med 4.7.1 kan inaktivera hjälpmedelsfunktioner genom att lägga till växlar till elementet <AppContextSwitchOverrides><runtime> i avsnittet i programmets konfigurationsfil och ange värdet till true. Följande konfiguration avregistrerar till exempel hjälpmedelsfunktioner som introduceras i .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>

Nyheter i hjälpmedel i .NET Framework 4.8.1

.NET Framework 4.8.1 innehåller nya hjälpmedelsfunktioner inom följande områden:

Windows Forms

Lade till och förbättrade UIA-representationer

Innan .NET Framework 4.8.1 saknade Windows Forms stöd för en rad UIA-mönster för att stödja hjälpmedelsteknik för att interagera med program. Den här bristen kan göra att Skärmläsaren eller andra skärmläsare rapporterar ofullständig eller felaktig information. Det kan också påverka viktiga funktioner som att flytta en markör genom texten i en TextBox kontroll. Med .NET Framework 4.8.1 har alla nödvändiga mönster för de gemensamma kontrollerna implementerats. Den här nya funktionen ger användare av hjälpmedelsteknik en mycket rikare upplevelse av programinteraktion.

  • Stöd har lagts till för UIA-expandera/dölj-mönstret för DateTimePicker kontrollen.
  • UIA-stöd har lagts till för MonthCalendar kontrollen. Nu kan hjälpmedelsverktyg som Skärmläsaren navigera genom de enskilda datumen i kontrollen.
  • Stöd för textmönster har implementerats för alla textbaserade kontroller, inklusive TextBoxkontrollerna , MaskedTextBox, redigera PropertyGrid kontroll, DataGridViewTextBoxCell, ToolStripTextBoxoch DomainUpDown .
  • ToolTip följer nu riktlinjerna för WCAG2.1 för att vara beständiga, avvisande och hovringsbara i Windows 11. Ändringar i knappbeskrivningsbeteendet är begränsade till Windows 11-system som har .NET Framework 4.8.1 installerat och gäller endast för program där en tidsgräns inte har angetts för knappbeskrivningen. Knappbeskrivningar som bevaras kan stängas med antingen Esc-tangenten eller Ctrl-tangenten eller genom att navigera till en kontroll med en annan knappbeskrivningsuppsättning.

Olika felkorrigeringar för befintliga hjälpmedelsfunktioner

  • Skärmläsaren kan nu fokusera på en tom DataGridView kontroll.
  • Åtgärdat ett problem som gjorde att skärmläsare räknade dolda kolumner när kolumnantalet tillkännagavs i en DataGridView kontroll.
  • Åtgärdat ett problem som gjorde att teckensnittsinställningarna DataGridView som angavs i DataGridviewCellStyle om det underliggande formuläret hade en Font egenskap som skiljer sig från DefaultFont.
  • Egenskapen för AccessibleName kontrollens DataGridView interna rullningslister har uppdaterats för att ta bort texten "Rullningslist".
  • Korrigerade färgen på en DataGridViewLinkCell när cellen är markerad.
  • Åtgärdade ett problem med anpassade DataGridView kontroller där det inte fanns några ControlType eller LocalizedControlType tillhandahållna anpassade DataGridViewCell element.
  • Har uppdaterat luminositetsförhållandet till 3.5:1 för ToolStripButton kontroller som har ToolStripRenderMode angetts till System.
  • Förbättrad tangentbordsnavigering i en ToolStrip när elementet är en ToolStripComboBox typ.
  • Uppdaterade bakgrundsfärgen för ToolStripButton i högkontrastläge.
  • Kontrollera att det finns en rektangel för avgränsning som rapporteras till hjälpmedelstekniken ToolStripSeparatorför .
  • Ett problem som kan orsaka att skärmläsaren JAWS kraschar när du läser PropertyGrid kontrollen har åtgärdats.
  • Kontrollera att UIA-hierarkiträdet för en PropertyGrid kontroll uppdateras när en komplex post som Font expanderas. Kontrollera också att trädet uppdateras korrekt när posten sedan komprimeras och inte längre visas.
  • PropertyGrid kategorier har nu en lokaliserad kontrolltyp av PropertyGrid category.
  • Ett problem med ComboBox det som kan orsaka att appen kraschar under Hjälpmedelsinsikter för Windows har åtgärdats.
  • Har uppdaterat kantlinjefärgen Button för att få mer kontrast i standardfärgerna.
  • Aktiverade hjälpmedelsverktyg för att komma åt knapparna i ett maximerat MDI-underordnat ControlBox formulär.
  • Egenskapen AccessibleName för en DomainUpDown kontroll har ett nytt standardvärde för en tom sträng. Den tomma strängen uppmuntrar utvecklare att skapa ett meningsfullt namn i stället för att acceptera det tidigare icke-tomma standardvärdet.
  • AccessibleName Egenskapen för knappen Skriv ut har uppdaterats i PrintPreviewDialog från "Utskriftsknapp" till "Skriv ut" för att undvika redundans när skärmläsare meddelar kontrollen och dess typ.
  • UIA-listkontroller har uppdaterats för att ta bort ett tomt listelement när en PropertyGrid cell av typen ComboBox stängs och inte längre visas.

Windows Presentation Foundation (WPF)

Förbättringar av knappbeskrivningshantering

I den här versionen förbättrade WPF upplevelsen genom att se till att en knappbeskrivning i det aktuella fönstret enkelt kan stängas med hjälp av Esc-tangenten, Ctrl-tangenten (av sig själv) eller genom kombinationen Ctrl+Skift+F10. Esc-nyckelns omfattning minskades i den här versionen så att den endast gäller för det aktuella fönstret, när den tidigare skulle ha tillämpats på alla öppna knappbeskrivningar i programmet. Som standard följer WPF-knappbeskrivningarna WCAG2.1-riktlinjerna för att vara beständiga, avvisande och hovringsbara.

Nyheter i tillgänglighet i kumulativ uppdatering 11 augusti 2020 för .NET Framework 4.8

Den kumulativa uppdateringen 11 augusti 2020-KB4569746 för .NET Framework 4.8 innehåller nya hjälpmedelsfunktioner i Windows Forms:

  • Åtgärdar ett problem med att meddela PropertyGrid kontrollobjekt och en kategoris expanderade/komprimerade tillstånd av skärmläsare.

  • Uppdateringar kontrollens PropertyGrid tillgängliga mönster och dess inre element.

  • Uppdateringar de tillgängliga namnen på kontrollens PropertyGrid inre element så att de meddelas korrekt av skärmläsare.

  • Adresser som kan avgränsa rektangel åtkomliga egenskaper för PropertyGridView kontrollerna.

  • Gör det möjligt för skärmläsare att korrekt meddela det expanderade/komprimerade tillståndet DataGridView för kombinationsruteceller.

Nyheter inom hjälpmedel i .NET Framework 4.8

.NET Framework 4.8 innehåller nya hjälpmedelsfunktioner inom följande områden:

Windows Forms

I .NET Framework 4.8 lägger Windows Forms till stöd för LiveRegions och Notification Events till många vanliga kontroller. Den lägger också till stöd för Knappbeskrivningar när en användare navigerar till en kontroll med hjälp av tangentbordet.

Stöd för UIA LiveRegions i Etiketter och StatusStrips

UIA LiveRegions gör det möjligt för programutvecklare att meddela skärmläsare om en textändring i en kontroll som finns förutom den plats där användaren arbetar. Detta är användbart, till exempel för en StatusStrip kontroll som visar en anslutningsstatus. Om anslutningen tas bort och statusen ändras kanske utvecklaren vill meddela skärmläsaren.

Från och med .NET Framework 4.8 implementerar Windows Forms UIA LiveRegions för både Label kontrollerna och StatusStrip . Följande kod använder till exempel LiveRegion i en Label kontroll med namnet label1:

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

…
Label1.Text = "Ready!";

Skärmläsaren meddelar "Klar" oavsett var användaren interagerar med programmet.

Du kan också implementera din UserControl 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);
      }
   }
}

UIA-meddelandehändelser

UIA-meddelandehändelsen, som introducerades i Windows 10 Fall Creators Update, gör att din app kan skapa en UIA-händelse, vilket leder till att Skärmläsaren helt enkelt gör ett meddelande baserat på text som du anger med händelsen, utan att behöva ha en motsvarande kontroll i användargränssnittet. I vissa scenarier är det här ett enkelt sätt att avsevärt förbättra appens tillgänglighet. I kan också vara användbart för att meddela om förloppet för en process som kan ta lång tid. Mer information om UIA-meddelandehändelser finns i Kan din skrivbordsapp utnyttja den nya UI Notification-händelsen?.

I följande exempel genereras meddelandehändelsen:

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

Knappbeskrivningar för tangentbordsåtkomst

I program som riktar in sig på .NET Framework 4.7.2 och tidigare versioner kan en kontrollknappbeskrivning bara utlösas för att dyka upp genom att flytta en muspekare till kontrollen. Från och med .NET Framework 4.8 kan en tangentbordsanvändare utlösa en kontrolls knappbeskrivning genom att fokusera kontrollen med hjälp av en tabbtangent eller piltangent med eller utan modifierarnycklar. Den här specifika hjälpmedelsförbättringen kräver ytterligare en AppContext-växel:

<?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>

Följande bild visar knappbeskrivningen när användaren har valt en knapp med tangentbordet.

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

Windows Presentation Foundation (WPF)

Från och med .NET Framework 4.8 innehåller WPF ett antal hjälpmedelsförbättringar.

Skärmläsare meddelar inte längre element med dold eller dold synlighet

Element med dold eller dold synlighet meddelas inte längre av skärmläsaren. Användargränssnitt som innehåller element med synlighet för Visibility.Collapsed eller Visibility.Hidden kan förvrängas av skärmläsare om de meddelas till användaren. Från och med .NET Framework 4.8 innehåller WPF inte längre komprimerade eller dolda element i kontrollvyn för UIAutomation-trädet, så skärmläsarna kan inte längre meddela dessa element.

SelectionTextBrush-egenskap för användning med icke-Adorner-baserad textmarkering

I .NET Framework 4.7.2 har WPF lagt till möjligheten att rita TextBox och PasswordBox textval utan att använda Adorner-lagret. Förgrundsfärgen för den markerade texten i det här scenariot dikterades av SystemColors.HighlightTextBrush.

.NET Framework 4.8 lägger till en ny egenskap, SelectionTextBrush, som gör att utvecklare kan välja den specifika penseln för den markerade texten när de använder icke-Adorner-baserad textmarkering. Den här egenskapen fungerar endast på TextBoxBase-derived-kontroller och PasswordBox kontrollen i WPF-program med icke-Adorner-baserad textmarkering aktiverad. Det fungerar inte på RichTextBox kontrollen. Om icke-Adorner-baserad textmarkering inte är aktiverad ignoreras den här egenskapen.

Om du vill använda den här egenskapen lägger du bara till den i XAML-koden och använder lämplig pensel eller bindning. Den resulterande textmarkeringen ser ut så här:

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

Du kan kombinera användningen av egenskaperna och SelectionTextBrush för att generera valfri kombination av SelectionBrush bakgrunds- och förgrundsfärg som du anser vara lämplig.

Stöd för egenskapen UIAutomation ControllerFor

UIAutomations ControllerFor egenskap returnerar en matris med automationselement som manipuleras av automationselementet som stöder den här egenskapen. Den här egenskapen används ofta för att föreslå hjälpmedel automatiskt. ControllerFor används när ett automationselement påverkar ett eller flera segment i programgränssnittet eller skrivbordet. Annars är det svårt att associera effekten av kontrollåtgärden med gränssnittselement. Den här funktionen lägger till möjligheten för kontroller att ange ett värde för ControllerFor egenskapen.

.NET Framework 4.8 lägger till en ny virtuell metod, GetControlledPeersCore(). Om du vill ange ett värde för ControllerFor egenskapen åsidosätter du den här metoden och returnerar en List<AutomationPeer> för de kontroller som manipuleras av den här 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;
   }
}

Knappbeskrivningar för tangentbordsåtkomst

I .NET Framework 4.7.2 och tidigare versioner visas knappbeskrivningar endast när användaren hovrar musmarkören över en kontroll. I .NET Framework 4.8 visas knappbeskrivningar även på tangentbordsfokus, samt via kortkommando.

För att aktivera den här funktionen måste ett program rikta in sig på .NET Framework 4.8 eller anmäla sig med hjälp Switch.UseLegacyAccessibilityFeatures.3 av appcontext-växlarna och Switch.UseLegacyToolTipDisplay. Följande är en exempelfil för programkonfiguration:

<?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>

När den är aktiverad visar alla kontroller som innehåller en knappbeskrivning den när kontrollen får tangentbordsfokus. Knappbeskrivningen kan stängas över tid eller när tangentbordets fokus ändras. Användarna kan också stänga knappbeskrivningen manuellt med hjälp av ett nytt kortkommando, Ctrl+Skift+F10. När knappbeskrivningen har stängts kan den visas igen med samma kortkommando.

Kommentar

Knappbeskrivningar i menyfliksområdet för Ribbon kontroller visas inte i tangentbordsfokus. De visas bara via kortkommandot.

Stöd har lagts till för egenskaperna SizeOfSet och PositionInSet UIAutomation

Windows 10 introducerade två nya UIAutomation-egenskaper och SizeOfSetPositionInSet, som används av program för att beskriva antalet objekt i en uppsättning. UIAutomation-klientprogram, till exempel skärmläsare, kan sedan fråga ett program om dessa egenskaper och meddela en korrekt representation av programmets användargränssnitt.

Från och med .NET Framework 4.8 exponerar WPF dessa två egenskaper för UIAutomation i WPF-program. Detta kan göras på två sätt:

  • Genom att använda beroendeegenskaper.

    WPF lägger till två nya beroendeegenskaper AutomationProperties.SizeOfSet och AutomationProperties.PositionInSet. En utvecklare kan använda XAML för att ange sina värden:

    <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>
    
  • Genom att åsidosätta virtuella AutomationPeer-metoder.

    De GetSizeOfSetCore() virtuella metoderna och GetPositionInSetCore() lades till i AutomationPeer klassen. En utvecklare kan ange värden för SizeOfSet och PositionInSet genom att åsidosätta dessa metoder, som du ser i följande exempel:

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

Dessutom ger objekt i ItemsControl instanser ett värde för dessa egenskaper automatiskt utan ytterligare åtgärder från utvecklaren. Om en ItemsControl grupperas representeras samlingen med grupper som en uppsättning och varje grupp räknas som en separat uppsättning, där varje objekt i gruppen tillhandahåller sin position i gruppen samt gruppens storlek. Automatiska värden påverkas inte av virtualisering. Även om ett objekt inte realiseras räknas det fortfarande mot den totala storleken på uppsättningen och påverkar positionen i uppsättningen av dess syskonobjekt.

Automatiska värden anges endast om programmet riktar in sig på .NET Framework 4.8. För program som riktar sig mot en tidigare version av .NET Framework kan du ange Switch.UseLegacyAccessibilityFeatures.3AppContext-växeln, som du ser i följande App.config-fil:

<?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>

Arbetsflödesdesigner för Windows Workflow Foundation (WF)

Arbetsflödesdesignern innehåller följande ändringar i .NET Framework 4.8:

  • Användare som använder Skärmläsaren ser förbättringar i FlowSwitch-ärendeetiketter.

  • Användare som använder Skärmläsaren ser förbättringar i knappbeskrivningar.

  • Användare som väljer högkontrasteman ser förbättringar i synligheten för arbetsflödesdesignern och dess kontroller, till exempel bättre kontrastförhållande mellan element och mer märkbara markeringsrutor som används för fokuselement.

Om ditt program är avsett för .NET Framework 4.7.2 eller en tidigare version kan du välja dessa ändringar genom att ange AppContext-växeln Switch.UseLegacyAccessibilityFeatures.3 till false i programkonfigurationsfilen. Mer information finns i avsnittet Dra nytta av hjälpmedelsförbättringar i den här artikeln.

Nyheter i hjälpmedel i .NET Framework 4.7.2

.NET Framework 4.7.2 innehåller nya hjälpmedelsfunktioner inom följande områden:

Windows Forms

OS-definierade färger i högkontrastteman

Från och med .NET Framework 4.7.2 använder Windows Forms färger som definierats av operativsystemet i högkontrasteman. Detta påverkar följande kontroller:

Förbättringar av Skärmläsaren

Från och med .NET Framework 4.7.2 utökas Skärmläsaren på följande sätt:

DataGridView-förbättringar

Från och med .NET Framework 4.7.2 DataGridView har kontrollen introducerat följande hjälpmedelsförbättringar:

Förbättrade visuella tips

Förbättrat stöd för Property Grid

  • De PropertyGrid underordnade kontrollelementen IsReadOnlyProperty returnerar nu endast en true för egenskapen när ett PropertyGrid-element är aktiverat.

  • De PropertyGrid underordnade kontrollelementen IsEnabledProperty returnerar endast en false för egenskapen när ett PropertyGrid-element kan ändras av användaren.

Förbättrad tangentbordsnavigering

Windows Presentation Foundation (WPF)

Ändringar i kontrollerna CheckBox och RadioButton

I .NET Framework 4.7.1 och tidigare versioner har WPF System.Windows.Controls.CheckBox och System.Windows.Controls.RadioButton kontrollerna inkonsekventa och, i klassiska och högkontrastt teman, felaktiga visuella fokusobjekt. Dessa problem uppstår i fall där kontrollerna inte har någon innehållsuppsättning. Detta kan göra övergången mellan teman förvirrande och det visuella fokusobjektet svårt att se.

I .NET Framework 4.7.2 är de här visuella objekten nu mer konsekventa mellan teman och lättare synliga i klassiska teman och högkontrastt-teman.

WinForms-kontroller som finns i ett WPF-program

För WinForms-kontroll i ett WPF-program i .NET Framework 4.7.1 och tidigare versioner kunde användarna inte ta en flik från WinForms-lagret om den första eller sista kontrollen i det lagret är WPF-kontrollen ElementHost . I .NET Framework 4.7.2 kan användarna nu ta en flik från WinForms-lagret.

Men automatiserade program som förlitar sig på fokus som aldrig kommer undan WinForms-lagret kanske inte längre fungerar som förväntat.

Nyheter i hjälpmedel i .NET Framework 4.7.1

.NET Framework 4.7.1 innehåller nya hjälpmedelsfunktioner inom följande områden:

Windows Presentation Foundation (WPF)

Förbättringar av skärmläsare

Om hjälpmedelsförbättringar är aktiverade innehåller .NET Framework 4.7.1 följande förbättringar som påverkar skärmläsare:

  • I .NET Framework 4.7 och tidigare versioner Expander tillkännagavs kontroller av skärmläsare som knappar. Från och med .NET Framework 4.7.1 tillkännages de korrekt som utökningsbara/komprimerbara grupper.

  • I .NET Framework 4.7 och tidigare versioner DataGridCell tillkännagavs kontroller av skärmläsare som "anpassade". Från och med .NET Framework 4.7.1 meddelas de nu korrekt som datarutnätscell (lokaliserad).

  • Från och med .NET Framework 4.7.1 meddelar skärmläsare namnet på en redigerbar ComboBox.

  • I .NET Framework 4.7 och tidigare versioner PasswordBox tillkännagavs kontrollerna som "inget objekt i vyn" eller hade på annat sätt felaktigt beteende. Det här problemet har åtgärdats från och med .NET Framework 4.7.1.

Stöd för UIAutomation LiveRegion

Skärmläsare som Skärmläsaren hjälper personer att läsa innehållet i användargränssnittet i ett program, vanligtvis med text-till-tal-utdata från användargränssnittets innehåll som har fokus. Men om ett användargränssnittselement ändras och inte har fokus kanske användaren inte meddelas och kan missa viktig information. Levande regioner syftar till att lösa det här problemet. En utvecklare kan använda dem för att informera skärmläsaren eller någon annan UIAutomation-klient om att en viktig ändring har gjorts i ett användargränssnittselement. Skärmläsaren kan sedan bestämma hur och när användaren ska informeras om ändringen.

För att stödja levande regioner har följande API:er lagts till i WPF:

Du kan skapa en LiveRegion genom att ange egenskapen AutomationProperties.LiveSetting på det intressanta elementet, som du ser i följande exempel:

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

När data i liveregionen ändras och du behöver informera en skärmläsare skapar du uttryckligen en händelse, enligt följande exempel.

var peer = FrameworkElementAutomationPeer.FromElement(myTextBlock);

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

Hög kontrast

Från och med .NET Framework 4.7.1 har förbättringar i hög kontrast gjorts i olika WPF-kontroller. De visas nu när temat har angetts HighContrast . Dessa kan vara:

  • Expander kontroll

    Det visuella fokusobjektet Expander för kontrollen är nu synligt. Tangentbordsvisualiseringarna för ComboBox,ListBox, och RadioButton kontrollerna är också synliga. Till exempel:

    Innan:

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

    Efter:

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

  • CheckBox och RadioButton kontroller

    Texten i CheckBox kontrollerna och RadioButton är nu lättare att se när den väljs i högkontrasteman. Till exempel:

    Innan:

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

    Efter:

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

  • ComboBox kontroll

    Från och med .NET Framework 4.7.1 är kantlinjen för en inaktiverad ComboBox kontroll samma färg som inaktiverad text. Till exempel:

    Innan:

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

    Efter:

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

    Dessutom använder inaktiverade och fokuserade knappar rätt temafärg.

    Innan:

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

    Efter:

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

    Slutligen, i .NET Framework 4.7 och tidigare versioner, gör du en ComboBox kontrolls formatmall så att Toolbar.ComboBoxStyleKey listrutepilen blir osynlig. Det här problemet har åtgärdats från och med .NET Framework 4.7.1. Till exempel:

    Innan:

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

    Efter:

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

  • DataGrid kontroll

    Från och med .NET Framework 4.7.1 använder sorteringsindikatorpilen i DataGrid kontroller nu rätt temafärger. Till exempel:

    Innan:

    Screenshot of sort indicator arrow before improvements.

    Efter:

    Screenshot of sort indicator arrow after improvements.

    I .NET Framework 4.7 och tidigare versioner ändrades dessutom standardlänkformatet till en felaktig färg på musen över i högkontrastlägen. Detta löses från och med .NET Framework 4.7.1. DataGrid På samma sätt använder kryssrutor de förväntade färgerna för feedback om tangentbordsfokus från och med .NET Framework 4.7.1.

    Innan:

    Screenshot of a link saying Click Me! in red.

    Efter:

    Screenshot of a link saying Click Me! in yellow.

Mer information om wpf-hjälpmedelsförbättringar i .NET Framework 4.7.1 finns i Hjälpmedelsförbättringar i WPF.

Hjälpmedelsförbättringar för Windows Forms

I .NET Framework 4.7.1 innehåller Windows Forms (WinForms) hjälpmedelsändringar inom följande områden.

Förbättrad visning i högkontrastläge

Från och med .NET Framework 4.7.1 erbjuder olika WinForms-kontroller förbättrad rendering i de HighContrast-lägen som är tillgängliga i operativsystemet. Windows 10 har ändrat värdena för vissa högkontrastsystemfärger och Windows Forms baseras på Windows 10 Win32-ramverket. För bästa möjliga upplevelse kan du köra på den senaste versionen av Windows och välja de senaste os-ändringarna genom att lägga till en app.manifest-fil i ett testprogram och avkommentara os-raden som stöds av Windows 10 så att den ser ut så här:

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

Några exempel på ändringar med hög kontrast är:

  • Bockmarkeringar i MenuStrip objekt är enklare att visa.

  • När det här alternativet är markerat är inaktiverade MenuStrip objekt enklare att visa.

  • Text i en markerad Button kontroll står i kontrast till markeringsfärgen.

  • Det är lättare att läsa inaktiverad text. Till exempel:

    Innan:

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

    Efter:

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

  • Förbättringar av högkontrast i dialogrutan Trådfel.

Förbättrat stöd för Skärmläsaren

Windows Forms i .NET Framework 4.7.1 innehåller följande hjälpmedelsförbättringar för Skärmläsaren:

  • Kontrollen MonthCalendar kan nås av Skärmläsaren samt av andra verktyg för automatisering av användargränssnittet.

  • Kontrollen CheckedListBox meddelar Skärmläsaren när ett objekts kontrolltillstånd har ändrats så att användaren meddelas att de har ändrat värdet för ett listobjekt.

  • Kontrollen DataGridViewCell rapporterar rätt skrivskyddad status till Skärmläsaren.

  • Skärmläsaren kan nu läsa inaktiverad ToolStripMenuItem text, medan den tidigare skulle hoppa över inaktiverade menyalternativ.

Förbättrat stöd för hjälpmedelsmönster för UIAutomation

Från och med .NET Framework 4.7.1 kan utvecklare av hjälpmedelsteknikverktyg utnyttja vanliga API-hjälpmedelsmönster och egenskaper för flera WinForms-kontroller. Dessa hjälpmedelsförbättringar omfattar:

Förbättrad egenskapswebbläsare

Från och med .NET Framework 4.7.1 innehåller Windows Forms:

  • Bättre tangentbordsnavigering genom de olika nedrullningsbara markeringsfönstren.
  • En minskning av onödiga tabbstopp.
  • Bättre rapportering av kontrolltyper.
  • Förbättrat skärmläsarebeteende.

ASP.NET webbkontroller

Från och med .NET Framework 4.7.1 och Visual Studio 2017 version 15.3 ASP.NET förbättrar hur ASP.NET webbkontroller fungerar med hjälpmedelsteknik i Visual Studio. Ändringarna omfattar följande:

  • Ändringar för att implementera hjälpmedelsmönster för användargränssnittet som saknas i kontroller, till exempel dialogrutan Lägg till fält i guiden Informationsvy eller dialogrutan Konfigurera ListView i ListView-guiden .

  • Ändringar för att förbättra visningen i högkontrastläge, till exempel Redigeraren för datasidesfält.

  • Ändringar för att förbättra tangentbordsnavigeringsfunktionerna för kontroller, till exempel dialogrutan Fält i guiden Redigera sidfält i DataPager-kontrollen, dialogrutan Konfigurera ObjectContext eller dialogrutan Konfigurera dataval i guiden Konfigurera datakälla.

.NET SDK-verktyg

Verktyget Configuration Editor (SvcConfigEditor.exe) och Service Trace Viewer (SvcTraceViewer.exe) har förbättrats genom att åtgärda olika tillgänglighetsproblem. De flesta av dessa var små problem, till exempel ett namn som inte definieras eller vissa gränssnittsautomatiseringsmönster som inte implementeras korrekt. Även om många användare inte kommer att känna till dessa felaktiga värden, kommer kunder som använder hjälpmedelstekniker som skärmläsare att finna dessa SDK-verktyg mer tillgängliga.

De här förbättringarna ändrar vissa tidigare beteenden, till exempel tangentbordsfokusordning.

Arbetsflödesdesigner för Windows Workflow Foundation (WF)

Hjälpmedelsändringar i arbetsflödesdesignern omfattar följande:

  • Tabbordningen ändras till vänster till höger och uppifrån och ned i vissa kontroller:

  • Fler funktioner är tillgängliga via tangentbordet:

    • När du redigerar egenskaperna för en aktivitet kan egenskapsgrupper minimeras av tangentbordet första gången de fokuserar.

    • Varningsikoner är tillgängliga via tangentbord.

    • Knappen Fler egenskaper i fönstret Egenskaper är tillgänglig via tangentbordet.

    • Tangentbordsanvändare kan komma åt rubrikobjekten i fönstret Argument och variabler i arbetsflödesdesignern.

  • Förbättrad synlighet för objekt med fokus, till exempel när:

    • Lägga till rader i datarutnät som används av arbetsflödesdesignern och aktivitetsdesigners.

    • Tabbing genom fält i aktiviteterna ReceiveReply och SendReply .

    • Ange standardvärden för variabler eller argument

  • Skärmläsare kan nu känna igen:

    • Brytpunkter som angetts i arbetsflödesdesignern.

    • Aktiviteterna FlowSwitch<T>, FlowDecisionoch CorrelationScope .

    • Innehållet i Receive aktiviteten.

    • Måltypen för InvokeMethod aktiviteten.

    • Kombinationsrutan Undantag och avsnittet Slutligen i TryCatch aktiviteten.

    • Kombinationsrutan Meddelandetyp, splittern i fönstret Lägg till korrelationsinitierare, fönstret Innehållsdefinition och fönstret KorrelerarOn-definition i meddelandeaktiviteterna (Receive, Send, SendReplyoch ReceiveReply).

    • Tillståndsdatorövergångar och övergångsmål.

    • Anteckningar och anslutningsappar för FlowDecision aktiviteter.

    • Kontextmenyerna (högerklicka) för aktiviteter.

    • Egenskapsvärderedigerarna, knappen Rensa sökning, knapparna Efter kategori och alfabetisk sortering och dialogrutan Uttrycksredigeraren i egenskapsrutnätet.

    • Zoomprocenten i arbetsflödesdesignern.

    • Avgränsaren i Parallel och Pick aktiviteter.

    • Aktiviteten InvokeDelegate .

    • Fönstret Välj typer för ordlisteaktiviteter (Microsoft.Activities.AddToDictionary<TKey,TValue>, Microsoft.Activities.RemoveFromDictionary<TKey,TValue>osv.).

    • Fönstret Bläddra och välj .NET-typ.

    • Sökvägar i arbetsflödesdesignern.

  • Användare som väljer högkontrasteman ser många förbättringar i synligheten för arbetsflödesdesignern och dess kontroller, till exempel bättre kontrastförhållanden mellan element och mer märkbara markeringsrutor som används för fokuselement.

Se även