.NET Framework 的協助工具新功能

.NET Framework 旨在讓使用者更容易存取應用程式。 協助工具功能可讓應用程式提供適當的輔助技術使用者體驗。 從 .NET Framework 4.7.1 開始,.NET Framework 包含大量協助工具改善,可讓開發人員建立無障礙應用程式。

協助工具參數

如果您的應用程式是以 .NET Framework 4.7 或較早版本為目標,但是在 .NET Framework 4.7.1 或更新版本上執行,您可以將其設定為選擇加入協助工具功能。 如果您的應用程式是以 .NET Framework 4.7.1 或更新版本為目標,您也可以將其設定為使用舊版的功能 (且不利用協助工具功能)。 每個包含協助工具的 .NET Framework 版本都有版本特定的協助工具參數,您可以在應用程式組態檔的 區段中新增至 <AppContextSwitchOverrides> 元素 <runtime> 。 以下是支援的參數:

版本 Switch
.NET Framework 4.7.1 "Switch.UseLegacyAccessibilityFeatures"
.NET Framework 4.7.2 "Switch.UseLegacyAccessibilityFeatures.2"
.NET Framework 4.8 "Switch.UseLegacyAccessibilityFeatures.3"
2020 年 8 月 11 日-KB4569746 .NET Framework 4.8 累積更新 「Switch.UseLegacyAccessibilityFeatures.4」
.NET Framework 4.8.1 「Switch.UseLegacyAccessibilityFeatures.5」

利用協助工具增強功能

針對以 .NET Framework 4.7.1 或更新版本為目標的應用程式,預設會啟用新的協助工具功能。 此外,如果應用程式是以舊版 .NET Framework 為目標但在 .NET Framework 4.7.1 或更新版本上執行,您可以新增參數至應用程式組態檔 <runtime> 區段中的 <AppContextSwitchOverrides> 項目,並將其值設定為 false,使其退出舊版協助工具行為 (進而利用協助工具改善)。 下列程式碼片段示範如何加入宣告 .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>

如果您選擇在較新的 .NET Framework 版本中加入宣告協助工具功能,您也必須明確加入宣告舊版的功能。 若要將應用程式設定為利用 .NET Framework 4.7.1 和 4.7.2 中的協助工具改進功能,請新增下列 <AppContextSwitchOverrides> 元素:

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

若要將應用程式設定為利用 .NET Framework 4.7.1、4.7.2、4.8 和 .NET Framework 4.8 的 2020 年 8 月累積更新,請新增下列 <AppContextSwitchOverrides> 元素:

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

還原舊版行為

以 4.7.1 開始之 .NET Framework 版本為目標的應用程式可以藉由將參數新增至應用程式組態檔區段中的 元素 <runtime> ,並將其值設定為 <AppContextSwitchOverrides>true ,以停用協助工具功能。 例如,下列組態會選擇退出 .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>

.NET Framework 4.8.1 協助工具的新功能

.NET Framework 4.8.1 包含下列領域的新協助工具功能:

Windows Forms

已新增和改善 UIA 標記法

在 .NET Framework 4.8.1 之前,Windows Forms 缺少一系列 UIA 模式的支援,以支援輔助技術來與應用程式互動。 此缺陷可能會導致朗讀程式或其他螢幕助讀程式回報不完整或不正確的資訊。 它也可能會影響重要的功能,例如在控制項中的 TextBox 文字中移動游標。 使用 .NET Framework 4.8.1,已實作通用控制項的所有必要模式。 這項新功能可讓使用者獲得更豐富的應用程式互動體驗。

  • 已將 UIA 展開/折迭模式的支援新增至 DateTimePicker 控制項。
  • 已將 UIA 支援新增至 MonthCalendar 控制項。 現在,朗讀程式等輔助技術工具可以巡覽控制項中的個別日期。
  • 實作所有文字型控制項的文字模式支援,包括 TextBoxMaskedTextBoxPropertyGrid 編輯控制項、 DataGridViewTextBoxCellToolStripTextBoxDomainUpDown 控制項。
  • ToolTip 現在遵循 WCAG2.1 指導方針 ,在 Windows 11 上持續、可關閉和暫留。 工具提示行為的變更僅限於已安裝 .NET Framework 4.8.1 的 Windows 11 系統,而且僅適用于未為工具提示設定逾時的應用程式。 保存的工具提示可以使用 Esc 鍵或 Ctrl 鍵來關閉,或流覽至具有另一個工具提示集的控制項。

現有協助工具功能的各種錯誤修正

  • 朗讀程式現在可以將焦點放在空 DataGridView 的控制項上。
  • 解決在控制項中 DataGridView 宣告資料行計數時,導致螢幕助讀程式計算隱藏資料行的問題。
  • 已解決當基礎表單具有 FontDefaultFont 不同的屬性時,會導致 DataGridView 忽略 中所 DataGridviewCellStyle 設定字型設定的問題。
  • AccessibleName更新控制項內部捲軸的 DataGridView 屬性,以移除文字 「ScrollBar」。
  • 已修正選取儲存格時的 DataGridViewLinkCell 色彩。
  • 已修正自訂 DataGridView 控制項沒有 ControlTypeLocalizedControlType 提供給自訂 DataGridViewCell 元素的問題。
  • 針對已 ToolStripRenderMode 設定 System 為 的控制項,將亮度比率更新為 3.5:1 ToolStripButton
  • 已改善 元素 ToolStripToolStripComboBox 型別時的 鍵盤流覽。
  • 以高對比模式更新 的背景色彩 ToolStripButton
  • 確定有一個周框回報給 的 ToolStripSeparator 輔助技術。
  • 已修正在讀取 PropertyGrid 控制項時可能導致螢幕助讀程式 JAWS 當機的問題。
  • 確定展開類似 Font 的複雜專案時,控制項的 PropertyGrid UIA 階層樹狀結構會更新。 也請確定當專案折迭且不再顯示時,樹狀結構會正確更新。
  • PropertyGrid 類別現在具有 的 PropertyGrid category 當地語系化控制項類型。
  • 已修正 會導致應用程式在適用于 Windows 的協助工具深入解析下當機的問題 ComboBox
  • 已更新 的 Button 框線色彩,以在預設色彩中具有更多對比。
  • 啟用輔助技術工具,以存取 ControlBox 最大化 MDI 子表單的按鈕。
  • AccessibleName控制項的 DomainUpDown 屬性具有空字串的新預設值。 空字串會鼓勵開發人員建立有意義的名稱,而不是接受先前的非空白預設值。
  • 已將 AccessibleNamePrintPreviewDialog [列印按鈕] 按鈕的 屬性從 [列印按鈕] 更新為 [列印],以避免螢幕助讀程式宣告控制項及其類型時備援。
  • 已更新 UIA 清單控制項,以在類型 ComboBox 為的儲存格關閉且不再顯示時 PropertyGrid 移除空白清單元素。

Windows Presentation Foundation (WPF)

可存取的工具提示處理改善

在此版本中,WPF 藉由確保目前視窗中的工具提示可以使用 Esc 鍵、Ctrl 鍵(本身)或 Ctrl+Shift+F10 的組合,輕鬆關閉體驗。 此版本中已減少 Esc 鍵的範圍,只套用至目前視窗,而先前會套用至應用程式中任何開啟的工具提示。 根據預設,WPF 工具提示會遵循 WCAG2.1 指導方針 ,以持續、可關閉和暫留。

2020 年 8 月 11 日 .NET Framework 4.8 累積更新的協助工具新功能

2020 年 8 月 11 日-KB4569746 .8 的 .NET Framework 4.8 累積更新包含 Windows Forms 中的新協助工具功能:

  • 解決螢幕 PropertyGrid 助讀程式宣佈控制項專案和類別展開/折迭狀態的問題。

  • 更新控制項及其內部元素的 PropertyGrid 可存取模式。

  • 更新控制項內部元素的 PropertyGrid 可存取名稱,讓螢幕助讀程式正確宣告它們。

  • 解決控制項的周框可存取屬性 PropertyGridView

  • 可讓螢幕助讀程式正確宣告下拉式方塊儲存格的 DataGridView 展開/折迭狀態。

.NET Framework 4.8 協助工具的新功能

.NET Framework 4.8 包含下列領域的新協助工具功能:

Windows Forms

在 .NET Framework 4.8 中,Windows Forms 已新增對許多常用控制項的 LiveRegions 和通知事件支援。 它也新增當使用者利用鍵盤巡覽至控制項時的工具提示支援。

標籤與 StatusStrips 中的 UIA LiveRegions 支援

UIA LiveRegions 可讓應用程式開發人員將控制項中的文字變更 (位於使用者正在處理的位置以外) 通知螢幕助讀程式。 例如,對於顯示連線狀態的 StatusStrip 控制項,這非常有用。 當連線中斷且狀態變更時,開發人員可能需要通知螢幕助讀程式。

從 .NET Framework 4.8 開始,Windows Forms 即針對 LabelStatusStrip 這兩個控制項實作 UIA LiveRegions。 例如,下列程式碼會在名為 label1Label 控制項中使用 LiveRegion:

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

…
Label1.Text = "Ready!";

不論使用者與應用程式互動的位置為何,朗讀程式均會播報「就緒」。

您也可以將您的 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 通知事件

Windows 10 Fall Creators Update 中引進了 UIA 通知事件,其可讓您的應用程式引發 UIA 事件,並讓朗讀程式只依據您提供的事件文字來播報,而不需要在 UI 中具備對應的控制項。 在某些情況下,這是大幅改善應用程式協助工具的直接方法。 它也可以用來通知可能需要長時間處理的程序進度。 如需 UIA 通知事件的詳細資訊,請參閱 Can your desktop app leverage the new UI Notification event? (傳統型應用程式可以利用新的 UI 通知事件嗎?)

下列範例會引發通知事件

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

鍵盤存取的工具提示

在目標為 .NET Framework 4.7.2 和更早版本的應用程式中,只有將滑鼠指標移到控制項中才會觸發跳出該控制項的工具提示。 從 .NET Framework 4.8 開始,鍵盤使用者可以藉由使用 Tab 鍵或方向鍵來將控制項焦點放在控制項上,而不使用修飾詞按鍵來觸發控制項的工具提示。 這個特定協助工具增強功能需要額外的 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>

下圖顯示當使用者以鍵盤選取按鈕時的工具提示。

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

Windows Presentation Foundation (WPF)

從 .NET Framework 4.8 開始,WPF 包含許多協助工具改善。

螢幕朗讀程式不再播報含摺疊或隱藏可見度的項目

螢幕朗讀程式不會再播報含摺疊或隱藏可見度的項目。 如果使用者介面包含的項目可見度為 Visibility.CollapsedVisibility.Hidden,則螢幕助讀程式向使用者播報時可能會表達錯誤。 從 .NET Framework 4.8 開始,WPF 的 UIAutomation 樹狀結構控制項檢視中不會再包含摺疊或隱藏項目,因此螢幕助讀程式即無法再播報這些項目。

搭配使用非 Adorner 文字選取範圍的 SelectionTextBrush 屬性

在 .NET Framework 4.7.2 中,WPF 新增了不使用裝飾項圖層來繪製 TextBoxPasswordBox 文字選取的功能。 在此案例中,選取文字的前景色彩取決於 SystemColors.HighlightTextBrush

.NET Framework 4.8 新增 SelectionTextBrush 屬性,可讓開發人員在使用非 Adorner 文字選取範圍時,針對選取的文字選取特定筆刷。 此屬性僅適用於 WPF 應用程式 (已啟用非 Adorner 文字選取範圍) 中 TextBoxBase 衍生的控制項和 PasswordBox 控制項。 此屬性不適用於 RichTextBox 控制項。 如果未啟用非 Adorner 文字選取範圍,則會忽略這個屬性。

若要使用這個屬性,只要將它新增至您的 XAML 程式碼,並使用適當的筆刷或繫結即可。 產生的文字選取範圍看起來像這樣:

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

您可以結合 SelectionBrushSelectionTextBrush 屬性的用法,視需要產生任何背景和前景色彩的組合。

支援 UIAutomation ControllerFor 屬性

UIAutomation 的 ControllerFor 屬性會傳回自動化項目的陣列,而這些項目是由支援此屬性的自動化項目所操作。 此屬性通常用於自動建議的協助工具。 當自動化項目會影響應用程式 UI 或桌面的一或多個區段時,請使用 ControllerFor。 否則,您很難將控制作業的影響與 UI 項目建立關聯。 這項功能讓控制項能夠提供 ControllerFor 屬性值。

.NET Framework 4.8 新增新的虛擬方法 GetControlledPeersCore()。 若要提供 ControllerFor 屬性值,只要覆寫這個方法,並傳回控制項 (由此 AutomationPeer 操作) 的 List<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;
   }
}

鍵盤存取的工具提示

在 .NET Framework 4.7.2 和更早版本中,只有當使用者將滑鼠游標停留在控制項上方時會顯示工具提示。 在 .NET Framework 4.8 中,工具提示也會在鍵盤焦點上顯示,以及透過鍵盤快速鍵顯示。

若要啟用這項功能,應用程式需要以 .NET Framework 4.8 為目標,或使用 Switch.UseLegacyAccessibilityFeatures.3Switch.UseLegacyToolTipDisplayAppContext 參數選擇加入。 下列是範例應用程式組態檔:

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

啟用之後,一旦控制項取得鍵盤焦點時,所有包含工具提示的控制項會都顯示工具提示。 工具提示可能會隨著時間或鍵盤焦點變更而關閉。 使用者也可以使用新的鍵盤快速鍵 Ctrl+Shift+F10 手動關閉工具提示。 工具提示一旦關閉,就可以使用相同的鍵盤快速鍵再次顯示。

注意

Ribbon 控制項上的功能區工具提示不會顯示在鍵盤焦點上;而只能透過鍵盤快速鍵顯示。

新增支援 SizeOfSet 和 PositionInSet UIAutomation 屬性

Windows 10 引進 SizeOfSetPositionInSet 這兩個新的 UIAutomation 屬性;應用程式會使用該屬性來描述集合中的項目計數。 UIAutomation 用戶端應用程式 (例如螢幕助讀程式) 可以查詢應用程式的這些屬性,並播報應用程式 UI 的精確呈現。

從 .NET Framework 4.8 開始,WPF 會將這兩個屬性公開至 WPF 應用程式中的 UIAutomation。 這可由下列兩種方法來完成:

  • 藉由使用相依性屬性。

    WPF 新增 AutomationProperties.SizeOfSetAutomationProperties.PositionInSet 這兩個新的相依性屬性。 開發人員可以使用 XAML 來設定其值:

    <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>
    
  • 藉由覆寫 AutomationPeer 虛擬方法。

    GetSizeOfSetCore()GetPositionInSetCore() 虛擬方法已新增至 AutomationPeer 類別。 開發人員可以覆寫這些方法來提供 SizeOfSetPositionInSet 的值,如下列範例所示:

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

此外,ItemsControl 執行個體中的項目可自動提供這些屬性值,而不需要開發人員的額外動作。 如果 ItemsControl 是分組形式,即會以各組來表示群組的集合,並將每個群組計算為個別的一組,而該群組內每個項目均提供其在該群組內的位置及群組大小。 虛擬化不會影響自動值。 即使某個項目未具現化,系統仍會將其計入集合的總大小,並會影響其同層級項目集合的位置。

只有在應用程式的目標為 .NET Framework 4.8 時,系統才會提供自動值。 若是以舊版 .NET Framework 為目標的應用程式,您可以設定 Switch.UseLegacyAccessibilityFeatures.3AppContext 參數,如下列 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>

Windows Workflow Foundation (WF) 工作流程設計工具

工作流程設計工具包括下列各項 .NET Framework 4.8 的變更:

  • 使用朗讀程式的使用者會看到 FlowSwitch 案例標籤方面的改善。

  • 使用朗讀程式的使用者會看到按鈕描述方面的改善。

  • 選擇高對比佈景主題之使用者會看到工作流程設計工具和其控制項在可見度方面的改善,例如項目之間的更佳對比比例,以及用於焦點項目的更明顯選取方塊。

如果應用程式是以 .NET Framework 4.7.2 或更早的版本為目標,您可以將應用程式組態檔中的 Switch.UseLegacyAccessibilityFeatures.3AppContext 參數 設為 false 來選擇加入這些變更。 如需詳細資訊,請參閱本文的利用協助工具增強功能一節。

.NET Framework 4.7.2 協助工具的新功能

.NET Framework 4.7.2 包含下列領域的新協助工具功能:

Windows Forms

高對比佈景主題中的作業系統定義色彩

從 .NET Framework 4.7.2 開始,Windows Forms 在高對比佈景主題中使用作業系統所定義的色彩。 這會影響下列控制項:

朗讀程式增強功能

從 .NET Framework 4.7.2 開始,朗讀程式支援的增強功能如下:

DataGridView 改善

從 .NET Framework 4.7.2 開始,DataGridView 控制項已經引進下列協助工具改善:

改善的視覺提示

已改進屬性方格支援

改善的鍵盤導覽

Windows Presentation Foundation (WPF)

CheckBox 和 RadioButton 控制項的變更

在 .NET Framework 4.7.1 和舊版的傳統和高對比佈景主題中,WPF System.Windows.Controls.CheckBoxSystem.Windows.Controls.RadioButton 控制項的焦點視覺效果不一致且不正確。 當控制項沒有任何內容集時,會發生上述問題。 這可能會讓人混淆佈景主題之間的轉換,也看不清楚焦點視覺效果。

現在,.NET Framework 4.7.2 的這些視覺效果在各佈景主題之間會更一致;在傳統和高對比佈景主題中也可以看得更清楚。

裝載於 WPF 應用程式的 WinForms 控制項

針對 .NET Framework 4.7.1 和舊版中裝載於 WPF 應用程式的 WinForms 控制項,如果 WinForms 層的第一個或最後一個控制項是 WPF ElementHost 控制項,則使用者無法按 Tab 鍵移出該 WinForms 層。 在 .NET Framework 4.7.2 中,使用者現在能按 Tab 鍵移出 WinForms 層。

不過,依賴焦點絕不會逸出 WinForms 層的自動化應用程式可能不再如預期運作。

.NET Framework 4.7.1 協助工具的新功能

.NET Framework 4.7.1 包含下列領域的新協助工具功能:

Windows Presentation Foundation (WPF)

螢幕助讀程式改善

如果啟用協助工具改善,則 .NET Framework 4.7.1 會包含下列影響螢幕助讀程式的增強功能:

  • 在 .NET Framework 4.7 和舊版本中,螢幕助讀程式會將 Expander 控制項宣告為按鈕。 從 .NET Framework 4.7.1 開始,螢幕助讀程式已將它們正確地宣告為可展開/可摺疊的群組。

  • 在 .NET Framework 4.7 和舊版本中,螢幕助讀程式會將 DataGridCell 控制項宣告為「自訂」。 從 .NET Framework 4.7.1 開始,螢幕助讀程式現在已將它們正確地宣告為資料格儲存格 (當地語系化)。

  • 從 .NET Framework 4.7.1 開始,螢幕助讀程式會宣告可編輯 ComboBox 的名稱。

  • 在 .NET Framework 4.7 和舊版本中,螢幕助讀程式會將 PasswordBox 控制項宣告為「檢視中沒有項目」或具有不正確的行為。 從 .NET Framework 4.7.1 開始已修正此問題。

UIAutomation LiveRegion 支援

朗讀程式這類螢幕助讀程式可協助人員讀取應用程式 UI 內容,通常是透過具有焦點之 UI 內容的文字轉換語音輸出。 不過,如果 UI 項目變更,而且沒有焦點,則使用者可能不會收到通知,並可能遺失重要資訊。 即時區域的目標在解決這個問題。 開發人員可以使用它們來通知螢幕助讀程式或任何其他 UIAutomation 用戶端,已對 UI 項目進行重要變更。 螢幕助讀程式接著可以決定如何和何時通知使用者已進行這項變更。

為了支援即時區域,已將下列 API 新增至 WPF:

您可以在感興趣的項目上設定 AutomationProperties.LiveSetting 屬性,以建立 LiveRegion,如下列範例所示:

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

如果即時區域中的資料變更,而且您需要通知螢幕助讀程式,請明確地引發事件,如下列範例所示。

var peer = FrameworkElementAutomationPeer.FromElement(myTextBlock);

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

高對比

從 .NET Framework 4.7.1 開始,已對各種 WPF 控制項進行高對比改善。 現在,設定 HighContrast 佈景主題時,可以看到它們。 其中包括:

  • Expander控制項

    控制項的 Expander 焦點視覺效果現在可見。 現在也會顯示 ComboBoxListBoxRadioButton 控制項的鍵盤視覺效果。 例如:

    之前:

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

    之後:

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

  • CheckBoxRadioButton 控制項

    在高對比佈景主題中選取時,CheckBoxRadioButton 控制項中的文字現在更容易出現。 例如:

    之前:

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

    之後:

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

  • ComboBox控制項

    從 .NET Framework 4.7.1 開始,已停用的 ComboBox 控制項框線色彩與已停用的文字色彩相同。 例如:

    之前:

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

    之後:

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

    此外,已停用和聚焦按鈕會使用正確的佈景主題色彩。

    之前:

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

    之後:

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

    最後,在 .NET Framework 4.7 和舊版本中將 ComboBox 控制項的樣式設定為 Toolbar.ComboBoxStyleKey 會導致無法看到下拉式箭號。 從 .NET Framework 4.7.1 開始已修正此問題。 例如:

    之前:

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

    之後:

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

  • DataGrid控制項

    從 .NET Framework 4.7.1 開始,DataGrid 控制項中的排序指標箭號現在會使用正確佈景主題色彩。 例如:

    之前:

    Screenshot of sort indicator arrow before improvements.

    之後:

    Screenshot of sort indicator arrow after improvements.

    此外,在 .NET Framework 4.7 和舊版本的高對比模式中,預設連結樣式會在滑鼠移至上方時變更為不正確的色彩。 從 .NET Framework 4.7.1 開始已解決此問題。 同樣地,從 .NET Framework 4.7.1 開始, DataGrid 核取方塊資料行會針對鍵盤焦點回饋使用預期的色彩。

    之前:

    Screenshot of a link saying Click Me! in red.

    之後:

    Screenshot of a link saying Click Me! in yellow.

如需 .NET Framework 4.7.1 中的 WPF 協助工具改善詳細資訊;請參閱 WPF 的協助工具改善

Windows Forms 協助工具改善

在 .NET Framework 4.7.1 中,Windows Forms (WinForms) 包含下列領域的協助工具變更。

高對比模式中改善的顯示

從 .NET Framework 4.7.1 開始,各種 WinForms 控制項都提供作業系統適用的高對比模式呈現改善。 Windows 10 已變更某些高對比系統色彩的值,而且 Windows Forms 是以 Windows 10 Win32 架構為基礎。 為了獲得最佳體驗,請在最新版本的 Windows 上執行,並在測試應用程式中新增 app.manifest 檔案,並取消批註 Windows 10 支援的作業系統行,使其看起來如下:

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

一些高對比變更範例包含:

  • MenuStrip 項目中的核取記號較容易檢視。

  • 選取時,已停用 MenuStrip 項目較容易檢視。

  • 所選取 Button 控制項中的文字會與選取色彩成對比。

  • 已停用的文字較容易閱讀。 例如:

    之前:

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

    之後:

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

  • 執行緒例外狀況對話方塊中的高對比改善。

改善的朗讀程式支援

.NET Framework 4.7.1 中的 Windows Forms 包含朗讀程式的下列協助工具改善:

  • 朗讀程式和其他 UI 自動化工具可以存取 MonthCalendar 控制項。

  • CheckedListBox 控制項會在項目的核取狀態已經變更,因而通知使用者它們已變更清單項目值時通知 [朗讀程式]。

  • DataGridViewCell 控制項會向朗讀程式報告正確的唯讀狀態。

  • 朗讀程式現在可以讀取已停用 ToolStripMenuItem 文字,而之前它會略過已停用的功能表項目。

UIAutomation 協助工具模式的增強支援

從 .NET Framework 4.7.1 開始,協助工具技術工具開發人員可以利用許多 WinForms 控制項的一般 API 協助工具模式和屬性。 這些協助工具改善包含:

改善的屬性瀏覽器體驗

從 .NET Framework 4.7.1 開始,Windows Forms 包含:

  • 透過各種下拉式選取視窗進行更佳的鍵盤導覽。
  • 減少不必要的定位停駐點。
  • 更適當地報告控制項類型。
  • 改善的朗讀程式行為。

ASP.NET Web 控制項

從 .NET Framework 4.7.1 和 Visual Studio 2017 15.3 版開始,ASP.NET 改善 ASP.NET Web 控制項在 Visual Studio 中使用協助工具技術的方式。 變更包括下列項目:

  • 在控制項中,實作遺漏 UI 協助工具模式的變更,例如在 [詳細資料檢視精靈] 的 [新增欄位] 對話方塊或 [ListView 精靈] 的 [設定 ListView] 對話方塊。

  • 改善高對比模式顯示的變更,例如資料頁面巡覽區欄位編輯器

  • 改善控制項鍵盤瀏覽體驗的變更,例如 DataPager 控制項 [編輯頁面巡覽區欄位精靈] 的 [欄位] 對話方塊、[設定 ObjectContext] 對話方塊,或 [設定資料來源精靈] 的 [設定資料選取項目] 對話方塊。

.NET SDK 工具

組態編輯器工具 (SvcConfigEditor.exe)服務追蹤檢視器工具 (SvcTraceViewer.exe) 藉由修正各種協助工具問題來改善。 其中大部分是小問題,例如未定義名稱,或未正確實作某些 UI 自動化模式。 雖然許多使用者並未注意到這些不正確的值,但使用螢幕助讀程式等輔助技術的客戶會發現這些 SDK 工具更易於存取。

這些增強功能變更一些先前的行為,例如鍵盤焦點的順序。

Windows Workflow Foundation (WF) 工作流程設計工具

在工作流程設計工具中的協助工具變更包括下列各項:

  • 在某些控制項中,定位順序變更為由左至右及由上至下:

  • 可透過鍵盤使用多個功能:

    • 編輯活動的屬性時,如果第一次將焦點放在屬性群組,可以透過鍵盤將其摺疊。

    • 可透過鍵盤存取警告圖示。

    • 可透過鍵盤存取 [屬性] 視窗中的 [其他屬性] 按鈕。

    • 鍵盤使用者可以存取工作流程設計工具之 [引數] 和 [變數] 窗格中的標頭項目。

  • 在以下這類情況發生時,已改善具有焦點之項目的可見性:

    • 在工作流程設計工具與活動設計工具所使用的資料格中新增資料列。

    • 使用 Tab 鍵循環顯示 ReceiveReplySendReply 活動的欄位。

    • 設定變數或引數的預設值

  • 螢幕助讀程式現在可以正確辨識:

    • 工作流程設計工具中設定的中斷點。

    • FlowSwitch<T>FlowDecisionCorrelationScope 活動。

    • Receive 活動的內容。

    • InvokeMethod 活動的目標類型。

    • TryCatch 活動中的例外狀況下拉式方塊和 Finally 區段。

    • 傳訊活動 (ReceiveSendSendReplyReceiveReply) 中的 [訊息類型] 下拉式方塊、[新增關聯性初始設定式] 視窗、[內容定義] 視窗和 [CorrelatesOn 定義] 視窗。

    • 狀態機器轉換和轉換目的地。

    • FlowDecision 活動的註釋和連接器。

    • 活動的操作 (右鍵) 功能表。

    • 屬性方格中的屬性值編輯器、[清除搜尋] 按鈕、[依分類] 及 [字母順序] 排序按鈕和 [運算式編輯器] 對話方塊。

    • 工作流程設計工具中的顯示比例百分比。

    • ParallelPick 活動中的分隔符號。

    • InvokeDelegate 活動。

    • 字典活動 (Microsoft.Activities.AddToDictionary<TKey,TValue>Microsoft.Activities.RemoveFromDictionary<TKey,TValue> 等) 的 [選取類型] 視窗。

    • [瀏覽並選取 .NET 類型] 視窗。

    • 工作流程設計工具中的階層連結。

  • 選擇高對比佈景主題的使用者會看到工作流程設計工具和其控制項在可見性方面的許多改善,例如項目之間的更佳對比比例以及用於焦點項目的更明顯選取方塊。

另請參閱