工作窗格是使用者介面面板,通常停駐在 Microsoft Office 應用程式中視窗的一側。 自訂工作窗格可讓您建立自己的工作窗格,並為使用者提供熟悉的介面來存取解決方案的功能。 例如,介面可以包含執行程式碼以修改文件或顯示資料來源資料的控制項。
適用於: 本主題中的資訊適用於 Outlook 的 VSTO 增益集專案。 如需詳細資訊,請參閱 Office 應用程式和專案類型所提供的功能。
備註
自訂工作窗格與動作窗格不同。 動作窗格是 Microsoft Office Word 和 Microsoft Office Excel 文件層級自訂的一部分。 如需詳細資訊,請參閱 動作窗格概觀。
自訂工作窗格的優點
自訂工作窗格可讓您將功能整合到熟悉的使用者介面中。 您可以使用 Visual Studio 工具快速建立自訂工作窗格。
熟悉的使用者介面
Microsoft Office system 中應用程式的使用者已經熟悉使用 Word 中的 [樣式和格式設定 ] 工作窗格等工作窗格。 自訂工作窗格的行為與 Microsoft Office system 中的其他工作窗格類似。 使用者可以將自訂工作窗格停駐到應用程式視窗的不同兩側,也可以將自訂工作窗格拖曳到視窗中的任何位置。 您可以建立同時顯示多個自訂工作窗格的 VSTO 增益集,而且使用者可以個別控制每個工作窗格。
Windows 表單支援
您在 Visual Studio 中使用 Office 開發工具建立的自訂工作窗格使用者介面是以 Windows Forms 控制項為基礎。 您可以使用熟悉的 Windows Forms 設計工具來設計自訂工作窗格的使用者介面。 您也可以使用 Windows Forms 中的資料繫結支援,將資料來源繫結至工作窗格上的控制項。
建立自訂工作窗格
您可以透過兩個步驟建立基本自訂工作窗格:
將 Windows Forms 控制項 UserControl 新增至物件,以建立自訂工作窗格的使用者介面。
將使用者控制項傳遞至 CustomTaskPaneCollection VSTO 增益集中的物件,以實例化自訂工作窗格。 此集合會傳回一個新 CustomTaskPane 物件,可用來修改工作窗格的外觀,並回應使用者事件。
如需詳細資訊,請參閱 如何:將自訂工作窗格新增至應用程式。
建立使用者介面
使用 Visual Studio 中的 Office 開發工具建立的所有自訂工作窗格都包含物件 UserControl 。 此使用者控制項提供自訂工作窗格的使用者介面。 您可以在設計階段或執行階段建立使用者控制項。 如果您在設計階段建立使用者控制項,您可以使用 Windows Forms 設計工具來建構工作窗格的使用者介面。
具現化自訂工作窗格
建立包含自訂工作窗格使用者介面的使用者控制項之後,您必須具現化 CustomTaskPane。 若要這樣做,請呼叫 VSTO 增益集中的Add方法之一,將使用者控制項傳遞至CustomTaskPaneCollection。 此集合會公開為 CustomTaskPanes 類別的 ThisAddIn 欄位。 下列程式碼範例應從 ThisAddIn 類別中執行。
myUserControl1 = new MyUserControl();
myCustomTaskPane = this.CustomTaskPanes.Add(myUserControl1, "My Task Pane");
myCustomTaskPane.Visible = true;
這些 Add 方法會傳回新 CustomTaskPane 物件。 您可以使用此物件來修改工作窗格的外觀,並回應使用者事件。
控制多個視窗中的工作窗格
自訂工作窗格與文件框架視窗相關聯,該視窗會向使用者呈現文件或項目的檢視。 只有在相關聯的視窗可見時,工作窗格才會顯示。
若要判斷哪個視窗顯示自訂工作窗格,請在建立工作窗格時使用適當的 Add 方法多載:
若要將工作窗格與作用中視窗產生關聯,請使用該 Add 方法。
若要將工作窗格與指定視窗裝載的文件產生關聯,請使用Add
某些 Office 應用程式需要明確的指示,說明在開啟多個視窗時何時建立或顯示工作窗格。 因此,請務必考慮在程式碼中實例化自訂工作窗格的位置,以確保工作窗格與應用程式中的適當文件或專案一起顯示。 如需詳細資訊,請參閱 在應用程式視窗中管理自訂工作窗格。
從工作窗格存取應用程式
如果您想要從使用者控制層面自動化應用程式,可以直接在程式碼中使用 Globals.ThisAddIn.Application 存取物件模型。 靜態 Globals 類別提供對物件的 ThisAddIn 存取。
Application此物件的欄位是應用程式物件模型的進入點。
如需物件欄位Application的詳細資訊ThisAddIn,請參閱程式設計 VSTO 增益集。如需示範如何從自訂工作窗格自動化應用程式的逐步解說,請參閱逐步解說:從自訂工作窗格自動執行應用程式。 如需類別的詳細資訊 Globals ,請參閱 Office 專案中物件的全域存取。
管理工作窗格的使用者介面
建立工作窗格之後,您可以使用物件的 CustomTaskPane 屬性和事件來控制工作窗格的使用者介面,並在使用者變更工作窗格時做出回應。
讓自訂工作窗格可見
根據預設,工作窗格不可見。 若要讓工作窗格可見,您必須將 Visible 屬性設定為 true。
使用者可以隨時按一下工作窗格角落的 [關閉 ] 按鈕 (X) 來關閉工作窗格。 不過,使用者沒有預設方式可以再次開啟自訂工作窗格。 如果使用者關閉自訂工作窗格,除非您提供顯示自訂工作窗格的方式,否則該使用者無法再次檢視自訂工作窗格。
如果您在 VSTO 增益集中建立自訂工作窗格,您也應該建立 UI 元素,例如按鈕,使用者可以按一下該元素來顯示或隱藏自訂工作窗格。 如果您在支援自訂功能區的 Microsoft Office 應用程式中建立自訂工作窗格,您可以使用顯示或隱藏自訂工作窗格的按鈕,將控制群組新增至功能區。 如需示範如何執行此動作的詳細說明,請參閱 教學:將自訂工作窗格與功能區按鈕同步。
如果您在不支援自訂 Ribbon 的 Microsoft Office 應用程式中建立自訂工作窗格,您可以新增一個可以顯示或隱藏自訂工作窗格的 CommandBarButton。
修改工作窗格的外觀
您可以使用物件的 CustomTaskPane 屬性來控制自訂工作窗格的大小和位置。 您可以使用自訂工作窗格中包含的物件屬性 UserControl ,對自訂工作窗格的外觀進行許多其他變更。 例如,您可以使用使用者控制項的 BackgroundImage 屬性來指定自訂工作窗格的背景影像。
下表列出您可以使用屬性對 CustomTaskPane 自訂工作窗格所做的變更。
| 任務 | 房產 |
|---|---|
| 變更工作窗格的大小 | Height Width |
| 變更工作窗格的位置 | DockPosition |
| 隱藏工作窗格或使其可見 | Visible |
| 防止使用者變更工作窗格的位置 | DockPositionRestrict |
程式自訂工作窗格事件
您可能希望 VSTO 增益集在使用者修改自訂工作窗格時做出回應。 例如,如果使用者將窗格的方向從垂直變更為水平,您可能想要重新定位控制項。
下表列出您可以處理的事件,以回應使用者對自訂工作窗格所做的變更。
| 任務 | Event |
|---|---|
| 當使用者變更工作窗格的位置時回應。 | DockPositionChanged |
| 當使用者隱藏工作窗格或使其可見時回應。 | VisibleChanged |
清除工作窗格所使用的資源
建立自訂工作窗格之後,只要 VSTO 增益集正在執行,CustomTaskPane 物件就會駐留在記憶體中。 即使使用者按一下工作窗格角落的 [關閉 ] 按鈕 (X) 之後,物件仍會保留在記憶體中。
若要在 VSTO 增益集仍在執行時清除工作窗格所使用的資源,請使用 Remove 或 RemoveAt 方法。 這些方法會從集合中CustomTaskPane移除指定的CustomTaskPanes物件,並呼叫Dispose物件的方法。
Visual Studio Tools for Office 執行階段會在卸載 VSTO 增益集時,自動清除自訂工作窗格所使用的資源。 請勿在專案的ThisAddIn_Shutdown事件處理常式中呼叫Remove或RemoveAt方法。 這些方法會擲回ObjectDisposedException,因為 Visual Studio Tools for Office 執行階段會在呼叫ThisAddIn_Shutdown之前清除CustomTaskPane物件使用的資源。 如需相關 ThisAddIn_Shutdown資訊,請參閱 Office 專案中的事件。
管理多個應用程式視窗中的自訂工作窗格
當您在使用多個視窗來顯示檔和其他專案的應用程式中建立自訂工作窗格時,您必須採取額外的步驟,以確保工作窗格在使用者預期時可見。
所有應用程式中的自訂工作窗格都與文件框架視窗相關聯,該視窗會向使用者呈現文件或項目的檢視。 只有在相關聯的視窗可見時,工作窗格才會顯示。 不過,並非所有應用程式都以相同的方式使用文件框架視窗。
下列應用程式群組有不同的開發需求:
展望
當您建立 Outlook 的自訂工作窗格時,自訂工作窗格會與特定的 [檔案總管] 或 [偵測器] 視窗相關聯。 檔案總管是用來顯示資料夾內容的視窗,而檢視器則是顯示電子郵件或任務等項目的視窗。
如果您想要顯示具有多個 [檔案總管] 或 [偵測器] 視窗的自訂工作窗格,您必須在 [檔案總管] 或 [偵測器] 視窗開啟時建立自訂工作窗格的新實例。 若要執行此操作,請處理當創建 [Explorer] 或 [Inspector] 視窗時引發的事件,然後在事件處理常式中創建工作窗格。 您也可以處理 [瀏覽器] 和 [檢查器] 的事件,依據哪個視窗可見來隱藏或顯示任務窗格。
若要將工作窗格與特定的 Explorer 或 Inspector 產生關聯,請使用Add方法來建立工作窗格,並將Explorer或Inspector物件傳遞至window參數。 如需建立自訂工作窗格的詳細資訊,請參閱 自訂工作窗格概觀。
-
若要監控 Inspector 視窗的狀態,您可以處理下列 Inspector 相關事件:
避免 Outlook 中出現多個自訂工作窗格實例
若要防止 Outlook 視窗顯示自訂工作窗格的多個實例,請在關閉每個視窗時,從類別的CustomTaskPanes集合中ThisAddIn明確移除自訂工作窗格。 在關閉視窗時引發的事件中呼叫 Remove 方法,例如 Close 或 Close。
如果您未明確移除自訂工作窗格,Outlook 視窗可能會顯示自訂工作窗格的多個實例。 Outlook 有時會重複利用視窗,而重複利用的視窗將保留所有附加至其的自訂工作窗格的相關參考。
Word、InfoPath 和 PowerPoint
Word、InfoPath 和 PowerPoint 會在不同的文件框架視窗中顯示每個文件。 當您為這些應用程式建立自訂工作窗格時,自訂工作窗格只會與特定文件相關聯。 如果使用者開啟不同的文件,則自訂工作窗格會隱藏,直到先前的文件再次可見為止。
如果您想要顯示包含多個文件的自訂工作窗格,請在使用者建立新文件或開啟現有文件時建立自訂工作窗格的新實例。 若要這樣做,請處理建立或開啟文件時引發的事件,然後在事件處理常式中建立工作窗格。 您也可以根據可見的文件來處理文件事件,以隱藏或顯示工作窗格。
若要將工作窗格與特定文件視窗產生關聯,請使用方法 Add 建立工作窗格,並將 Window (適用於 Word)、 WindowObject (適用於 InfoPath) 或 DocumentWindow (適用於 PowerPoint) 傳遞給 視窗 參數。
Word 事件
若要監視 Word 中文件視窗的狀態,您可以處理下列事件:
InfoPath 事件
若要監視 InfoPath 中文件視窗的狀態,您可以處理下列事件:
PowerPoint 活動
若要監視 PowerPoint 中文件視窗的狀態,您可以處理下列事件:
Microsoft.Office.Interop.PowerPoint.EApplication_Event.AfterNewPresentation
Microsoft.Office.Interop.PowerPoint.EApplication_Event.AfterPresentationOpen
Microsoft.Office.Interop.PowerPoint.EApplication_Event.NewPresentation
Microsoft.Office.Interop.PowerPoint.EApplication_Event.PresentationOpen
Microsoft.Office.Interop.PowerPoint.EApplication_Event.WindowActivate
Microsoft.Office.Interop.PowerPoint.EApplication_Event.WindowDeactivate