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 enFont
egenskap som skiljer sig frånDefaultFont
. - 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
ellerLocalizedControlType
tillhandahållna anpassade DataGridViewCell element. - Har uppdaterat luminositetsförhållandet till 3.5:1 för ToolStripButton kontroller som har
ToolStripRenderMode
angetts tillSystem
. - 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.
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:
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 SizeOfSet
PositionInSet
, 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örSizeOfSet
ochPositionInSet
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.3
AppContext-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:
Kontrollens nedrullningsbara ToolStripDropDownButton pil.
Kontrollerna Buttonoch RadioButtonCheckBox med FlatStyle inställt på FlatStyle.Flat eller FlatStyle.Popup. Tidigare var markerade text- och bakgrundsfärger inte kontrasterande och svåra att läsa.
Kontroller som finns i en GroupBox som har egenskapen Enabled inställd på
false
.Kontrollerna ToolStripButton, ToolStripComboBoxoch ToolStripDropDownButton som har ett ökat ljusstyrkakontrastförhållande i högkontrastläge.
Egenskapen LinkColor för DataGridViewLinkCell.
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:
Den meddelar värdet för ToolStripMenuItem.ShortcutKeys egenskapen när texten i en ToolStripMenuItem.
Den anger när en ToolStripMenuItem har sin Enabled egenskap inställd på
false
.Den ger feedback om tillståndet för en kryssruta när ListView.CheckBoxes egenskapen är inställd
true
på .Skärmläsarens fokusordning för genomsökningsläge överensstämmer med kontrollernas visuella ordning i dialogrutan ClickOnce-nedladdning.
DataGridView-förbättringar
Från och med .NET Framework 4.7.2 DataGridView har kontrollen introducerat följande hjälpmedelsförbättringar:
Rader kan sorteras med tangentbordet. En användare kan använda F3-nyckeln för att sortera efter den aktuella kolumnen.
Kolumnbredden för den aktuella cellen kan ökas eller minskas med piltangenterna Alt + vänster/höger.
DataGridView.SelectionMode När är inställt på DataGridViewSelectionMode.FullRowSelectändrar kolumnrubriken färg för att visa den aktuella kolumnen när användaren flikar igenom cellerna i den aktuella raden.
Egenskapen AccessibleObject.Parent för en System.Windows.Forms.DataGridViewLinkCell.DataGridViewLinkCellAccessibleObject returnerar rätt överordnad kontroll.
Förbättrade visuella tips
- Kontrollerna RadioButton och CheckBox med en tom Text egenskap visar en fokusindikator när de får fokus.
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
- Kontrollen ToolStripButton tillåter fokus när den finns i en ToolStripPanel som har egenskapen inställd på TabStop
true
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:
Fälten AutomationElementIdentifiers.LiveSettingProperty och som identifierar egenskapen LiveSetting och händelsen LiveRegionChangedAutomationElementIdentifiers.LiveRegionChangedEvent. De kan anges med hjälp av XAML.
Egenskapen AutomationProperties.LiveSetting , som informerar skärmläsaren om vikten av användargränssnittsändringen för användaren.
Egenskapen AutomationProperties.LiveSettingProperty som identifierar egenskapen AutomationProperties.LiveSetting .
Metoden AutomationPeer.GetLiveSettingCore , som kan åsidosättas för att ange ett LiveSetting-värde .
Metoderna AutomationProperties.GetLiveSetting och AutomationProperties.SetLiveSetting som hämtar och anger ett LiveSetting-värde .
Uppräkningen System.Windows.Automation.AutomationLiveSetting , som definierar följande möjliga LiveSetting-värden :
AutomationLiveSetting.Off. Elementet skickar inte meddelanden om innehållet i den aktiva regionen har ändrats.
AutomationLiveSetting.Polite. Elementet skickar icke-avbrottskänsliga meddelanden om innehållet i liveregionen har ändrats.
AutomationLiveSetting.Assertive. Elementet skickar avbrottsmeddelanden om innehållet i liveregionen har ändrats.
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:
Efter:
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:
Efter:
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:
Efter:
Dessutom använder inaktiverade och fokuserade knappar rätt temafärg.
Innan:
Efter:
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:
Efter:
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:
Efter:
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:
Efter:
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:
Efter:
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:
Och ComboBoxToolStripSplitButton stöder nu mönstret expand/collapse.
Nu DataGridViewCheckBoxCell stöder växlingsmönstret.
Kontrollen ToolStripItem stöder Name egenskapen och mönstret expandera/dölj.
Kontrollerna NumericUpDown och DomainUpDown stöder Name egenskapen.
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:
Initiera korrelationsfönstret för att ange korrelationsdata för InitializeCorrelation aktiviteten.
Fönstret innehållsdefinition för aktiviteterna Receive, Send, SendReplyoch ReceiveReply .
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.
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.