建立協助工具應用程式具有重要的商業含意, 許多政府對於市售軟體訂定有協助工具法規, 而擁有「Windows 憑證」標誌就表示符合有關協助工具的要求。 據估計光是美國便有約三千萬居民受到軟體協助工具的影響,而其中大部分是潛在客戶。
本逐步解說將提出「Windows 憑證」標誌的五項協助工具需求。 根據這些需求,協助工具應用程式將會:
支援 [控制台] 的大小、色彩、字型和輸入設定。 當使用者變更 [控制台] 的設定時,功能表列、標題列、框線和狀態列的大小也會隨著調整。 不需要在這個應用程式中對控制項或程式碼進行其他變更。
支援高對比模式。
提供具備輔助說明的所有功能鍵盤存取。
以視覺呈現和程式設計方式顯示鍵盤焦點的位置。
避免只以音效傳達重要資訊。
如需詳細資訊,請參閱設計可及性應用程式的資源。
如需支援各種鍵盤配置的資訊,請參閱開發世界性的應用程式的最佳做法。
建立專案
本逐步解說會建立一個接受披薩訂單的應用程式使用者介面, 其中包含輸入顧客名稱的 TextBox、選取披薩尺寸的 RadioButton 群組、選取配料的 CheckedListBox、兩個標示為 [訂購] 和 [取消] 的 Button 控制項,以及一個含有結束命令的功能表。
使用者會輸入顧客名稱、披薩尺寸和想要的配料。 當使用者按一下 [訂購] 按鈕時,訊息方塊中會顯示訂單摘要及其費用,然後會清除控制項並準備接受下一筆訂單。 當使用者按一下 [取消] 按鈕時,會清除控制項並準備接受下一筆訂單。 當使用者按一下 [結束] 功能表項目時,程式會關閉。
本逐步解說的重點不在於零售訂單系統的程式碼,而是在於使用者介面的協助工具。 本逐步解說示範數個常用控制項的協助工具功能,這些控制項包括按鈕、選項按鈕、文字方塊和標籤。
開始建立應用程式
- 在 Visual Basic 或 Visual C# 中建立新的 Windows 應用程式。 將專案命名為 PizzaOrder 如需詳細資訊,請參閱建立新的解決方案和專案。
將控制項加入表單
將控制項加入表單時,請注意下列建立協助工具應用程式的方針:
設定 AccessibleDescription 和 AccessibleName 屬性。 在這個範例中,AccessibleRole 的預設值便已足夠。 如需協助工具屬性的詳細資訊,請參閱提供 Windows Forms 上控制項的協助工具資訊。
將字型大小設定為 10 或更大的點數。
備註
如果您一開始將表單的字型大小設定為 10,之後加入表單之所有控制項的字型大小都將是 10。
確定任何描述 TextBox 控制項的 Label 控制項都是依定位順序,緊接著位於 TextBox 控制項之前。
使用 "&" 字元,將便捷鍵加入使用者可能想要瀏覽之任何控制項的 Text 屬性。
使用 "&" 字元,將便捷鍵加入使用者可能想要瀏覽的控制項前面之標籤的 Text 屬性。 將標籤的 UseMnemonic 屬性設定為
true如此一來,當使用者按下便捷鍵時,焦點便會設定為定位順序的下一個控制項。將便捷鍵加入所有功能表項目。
讓 Windows 應用程式具備協助功能
如下所述將控制項加入表單並設定屬性。 如需如何在表單上排列控制項的模型,請參閱表格下方的圖片。
物體 房產 價值觀 Form1 無障礙描述 訂購表單 可及名稱 訂購表單 字型大小 10 文字 比薩訂購表單 PictureBox 名稱 商標 無障礙描述 一片披薩 可及名稱 公司標誌 圖片 任何圖示或點陣圖 標籤 名稱 公司名稱標籤 文字 好吃披薩 標籤索引 1 無障礙描述 公司名稱 可及名稱 公司名稱 背景色 藍色 Forecolor 黃色 字型大小 18 標籤 名稱 顧客標籤 文字 名稱(&N) 標籤索引 2 無障礙描述 顧客名稱標籤 可及名稱 顧客名稱標籤 UseMnemonic 對 文字框 名稱 客戶名稱 文字 (無) 標籤索引 3 無障礙描述 客戶名稱 可及名稱 客戶名稱 GroupBox 名稱 尺寸選項 無障礙描述 披薩尺寸選擇 可及名稱 披薩尺寸選擇 文字 披薩尺寸 標籤索引 4 RadioButton 名稱 smallPizza 文字 小披薩美金 $6.00 元(&S) 已核對 對 標籤索引 0 無障礙描述 小披薩 可及名稱 小披薩 RadioButton 名稱 largePizza 文字 大批薩美金 $10.00 元(&L) 標籤索引 1 無障礙描述 大批薩 可及名稱 大批薩 標籤 名稱 配料標籤 文字 配料 (每份美金 $0.75 元)(&T) 標籤索引 5 無障礙描述 配料標籤 可及名稱 配料標籤 UseMnemonic 對 CheckedListBox 名稱 配料 標籤索引 6 無障礙描述 可供選擇的配料 可及名稱 可供選擇的配料 物品 辣肉腸、臘腸、蘑菇 按鈕 名稱 訂單 文字 順序(&O) 標籤索引 7 無障礙描述 合計訂單 可及名稱 訂單總計 按鈕 名稱 取消 文字 取消(&C) 標籤索引 8 無障礙描述 取消訂單 可及名稱 取消訂單 主選單 名稱 主選單 選單項目 名稱 檔案指令 文字 檔案(&F) 選單項目 名稱 退出應用程式 文字 E&出口 您的表單看起來會如下圖所示:
具有名稱文字方塊的披薩訂單表單,以及大小和配料選取範圍。
支援高對比模式
高對比模式是 Windows 系統的一項設定,使用對比色彩和字型大小以提升可讀性,對於視覺受損的使用者很有幫助。 HighContrast 屬性可以判斷是否有設定高對比模式。
如果 SystemInformation.HighContrast 為 true,應用程式應該:
使用系統色彩配置來顯示所有使用者介面項目。
藉由視覺提示或音效來傳達原本由色彩傳達的任何資訊。 例如,如果使用紅色字型醒目提示特定清單項目,您也可以將粗體套用至字型,讓使用者透過非色彩提示得知該項目已醒目提示。
省略文字後的任何影像或圖樣。
當應用程式啟動並回應 UserPreferenceChanged 系統事件時,應該會檢查 HighContrast 的設定。 只要 HighContrast 的值變更,便會引發 UserPreferenceChanged 事件。
在應用程式中,唯一不使用色彩系統設定的項目是 lblCompanyName。 SystemColors 類別可將標籤的色彩設定變更為使用者選擇的系統色彩。
有效啟用高對比模式
建立一個方法,將標籤的色彩設定為系統色彩。
Private Sub SetColorScheme() If SystemInformation.HighContrast Then companyLabel.BackColor = SystemColors.Window companyLabel.ForeColor = SystemColors.WindowText Else companyLabel.BackColor = Color.Blue companyLabel.ForeColor = Color.Yellow End If End Subprivate void SetColorScheme() { if (SystemInformation.HighContrast) { companyLabel.BackColor = SystemColors.Window; companyLabel.ForeColor = SystemColors.WindowText; } else { companyLabel.BackColor = Color.Blue; companyLabel.ForeColor = Color.Yellow; } }在表單建構函式 (Visual Basic 中為
Public Sub New(),Visual C# 中為public Form1()) 中呼叫SetColorScheme程序。 若要存取 Visual Basic 中的建構函式,您必須展開標示為 [Windows Forms 設計工具產生的程式碼] 的區域。Public Sub New() MyBase.New() InitializeComponent() SetColorScheme() End Subpublic Form1() { InitializeComponent(); SetColorScheme(); }使用適當的簽章建立事件程序,以回應 UserPreferenceChanged 事件。
Protected Sub UserPreferenceChanged(sender As Object, _ e As Microsoft.Win32.UserPreferenceChangedEventArgs) SetColorScheme() End Subpublic void UserPreferenceChanged(object sender, Microsoft.Win32.UserPreferenceChangedEventArgs e) { SetColorScheme(); }呼叫
InitializeComponents之後,在表單建構函式中新增程式碼,將事件程序與系統事件連結。 這個方法會呼叫SetColorScheme程序。Public Sub New() MyBase.New() InitializeComponent() SetColorScheme() AddHandler Microsoft.Win32.SystemEvents.UserPreferenceChanged, _ AddressOf Me.UserPreferenceChanged End Subpublic Form1() { InitializeComponent(); SetColorScheme(); Microsoft.Win32.SystemEvents.UserPreferenceChanged += new Microsoft.Win32.UserPreferenceChangedEventHandler( this.UserPreferenceChanged); }先將程式碼加入表單的 Dispose 方法,再呼叫基底類別的 Dispose 方法,以便在應用程式關閉時釋放事件。 若要存取 Visual Basic 中的 Dispose 方法,您必須展開標示為 [Windows Form 設計工具產生的程式碼] 的區域。
備註
系統事件程式碼會執行獨立於主應用程式的執行緒。 如果您沒有釋放該事件,即使關閉程式之後,連結至該事件的程式碼仍會繼續執行。
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing AndAlso components IsNot Nothing Then components.Dispose() End If RemoveHandler Microsoft.Win32.SystemEvents.UserPreferenceChanged, _ AddressOf Me.UserPreferenceChanged MyBase.Dispose(disposing) End Subprotected override void Dispose(bool disposing) { if(disposing && components != null) { components.Dispose(); } Microsoft.Win32.SystemEvents.UserPreferenceChanged -= new Microsoft.Win32.UserPreferenceChangedEventHandler( this.UserPreferenceChanged); base.Dispose( disposing ); }按 F5 執行應用程式。
透過音效以外的其他方式傳達重要資訊
在這個應用程式中,資訊不只以音效傳達。 如果您在應用程式中使用音效,應該也可以使用其他方式來提供資訊。
透過音效以外的其他方式提供資訊
使用 Windows 應用程式開發介面函式 FlashWindow 讓標題列閃爍。 如需如何呼叫 Windows 應用程式開發介面函式的範例,請參閱逐步解說:呼叫 Windows API。
備註
使用者可以啟動 Windows 聲音感測服務,當系統音效透過電腦內建喇叭播放時,同時能使視窗閃爍。
在非強制回應視窗中顯示重要資訊,讓使用者可以有所回應。
顯示取得鍵盤焦點的訊息方塊, 但是如果使用者可能會輸入資料,則應避免使用這個方法。
在工作列的狀態通知區域中顯示狀態標記。 如需詳細資訊,請參閱如何:使用 Windows Forms NotifyIcon 元件將應用程式圖示新增至工作列。
測試應用程式
在部署應用程式之前,您應該測試已實作的協助工具功能。
測試協助工具功能
若要測試鍵盤存取,請拔除滑鼠,然後只利用鍵盤逐一測試使用者介面中的每一項功能。 請確定所有工作都可以只使用鍵盤執行。
若要測試是否支援高對比,請在 [控制台] 中選擇協助工具選項圖示。 按一下 [顯示] 索引標籤,然後選取 [使用高對比] 核取方塊。 巡覽所有使用者介面項目,確保色彩和字型變更均已正確反映。 同時確保已省略文字後的影像或圖樣。
備註
Windows NT 4 的 [控制台] 中並沒有協助工具選項圖示。 因此,這個變更 SystemInformation.HighContrast 設定的程序不適用於 Windows NT 4。
另外還有其他工具可以測試應用程式的協助工具。
若要測試鍵盤焦點的顯示,請執行放大鏡 (若要開啟 [放大鏡],請按一下 [開始] 功能表,然後依序指向 [程式集]、[附屬應用程式] 和 [協助工具],然後按一下 [放大鏡])。 同時使用鍵盤 Tab 鍵和滑鼠來巡覽使用者介面。 確保 [放大鏡] 正確追蹤所有巡覽。
若要測試螢幕項目的顯示,請執行 [檢查],然後同時使用滑鼠和 TAB 鍵跳到每個項目。 針對 UI 中的每個物件,確保 [檢查] 視窗的 [名稱]、[狀態]、[角色]、[位置] 和 [值] 欄位所顯示的資訊,對使用者都是有意義的。