備註
本檔適用於想要使用 System.Windows.Automation 命名空間中定義的受控UI自動化類別的 .NET Framework 開發人員。 如需 UI 自動化的最新資訊,請參閱 Windows 自動化 API:使用者介面自動化。
本主題描述 UI 自動化客戶端如何使用 Microsoft UI 自動化事件。
使用者介面自動化可讓用戶端訂閱感興趣的事件。 這項功能可藉由排除持續輪詢系統中所有UI元素的需求來改善效能,以查看是否有任何資訊、結構或狀態已變更。
只在定義範圍內接聽事件的能力也能提升效率。 例如,用戶端可以接聽樹狀結構中所有UI自動化元素的焦點變更事件,或只接聽一個元素及其子系上的焦點變更事件。
備註
請勿假設所有可能的事件都是由Microsoft UI 自動化提供者所引發。 例如,並非所有屬性變更都會導致 Windows Forms 和 Win32 控件的標準 Proxy 提供者引發事件。
如需更廣泛的UI自動化事件檢視,請參閱 UI 自動化事件概觀。
訂閱事件
用戶端應用程式使用下列其中一種方法註冊事件處理程式,以訂閱特定類型的事件。
呼叫 方法之前,您必須先建立委派方法來處理事件。 如果您想要的話,您可以在單一方法中處理不同類型的事件,並將此方法以多個呼叫傳遞至數據表中的其中一個方法。 例如,可以設定單一 AutomationEventHandler,根據 EventId 以不同的方式處理各種事件。
備註
若要處理視窗關閉的事件,請將傳遞至事件處理程式 WindowClosedEventArgs的自變數類型轉換為 。 因為視窗的 Microsoft UI Automation 元素不再有效,所以您無法使用 sender 參數來擷取資訊。請改用 GetRuntimeId。
謹慎
如果您的應用程式可能會從自己的UI接收事件,請勿使用應用程式的UI線程來訂閱事件,或取消訂閱。 這樣做可能會導致無法預期的行為。 如需詳細資訊,請參閱 UI自動化線程問題。
在關機時,或當使用者介面自動化事件不再對應用程式感興趣時,使用者介面自動化客戶端應該呼叫下列其中一種方法。
| 方法 | 說明 |
|---|---|
| RemoveAutomationEventHandler | 取消註冊使用 AddAutomationEventHandler註冊的事件處理程式。 |
| RemoveAutomationFocusChangedEventHandler | 取消註冊使用 AddAutomationFocusChangedEventHandler註冊的事件處理程式。 |
| RemoveAutomationPropertyChangedEventHandler | 取消註冊使用 AddAutomationPropertyChangedEventHandler註冊的事件處理程式。 |
| RemoveAllEventHandlers | 取消註冊所有已註冊的事件處理程式。 |
如需範例程式代碼,請參閱 訂閱 UI 自動化事件。