管理多個應用程式視窗中的自訂工作窗格
更新:2010 年 5 月
在使用多重視窗的應用程式中建立自訂工作窗格以顯示文件和其他項目時,需要採取額外步驟以確保工作窗格能夠在使用者需要時顯示。
**適用於:**本主題中的資訊適用於下列應用程式的應用程式層級專案:Excel 2007 和 Excel 2010、InfoPath 2007 和 InfoPath 2010、Outlook 2007 和 Outlook 2010、PowerPoint 2007 和 PowerPoint 2010、Word 2007 和 Word 2010。如需詳細資訊,請參閱依 Office 應用程式和專案類型提供的功能。
所有應用程式中的自訂工作窗格會與文件框架視窗產生關聯,而該框架視窗會對使用者呈現文件或項目的檢視。 看得見相關聯的視窗時才看得見工作窗格。 但是,並非所有使用應用程式都以相同方式來使用文件框架視窗。
下列應用程式群組具有不同的開發需求:
Outlook
Word、InfoPath 和 PowerPoint 2010
Excel 和 PowerPoint 2007
如需觀看相關示範影片,請參閱如何:管理 Word 增益集中的工作窗格?(英文)。
Outlook
當您建立 Outlook 的自訂工作窗格時,自訂工作窗格將與特定檔案總管或偵測器視窗相關聯。 檔案總管視窗可顯示資料夾內容,而偵測器視窗則會顯示電子郵件訊息或工作之類的項目。
如果要在多個檔案總管或偵測器視窗中顯示自訂工作窗格,您需要在檔案總管或偵測器視窗開啟時,建立自訂工作窗格的新執行個體。 若要這麼做,請在建立檔案總管或偵測器視窗時處理引發的事件,然後在事件處理常式中建立工作窗格。 您也可以處理檔案總管與偵測器事件,以依據可見的視窗來隱藏或顯示工作窗格。
若要將工作窗格與特定檔案總管或偵測器產生關聯,請使用 CustomTaskPaneCollection.Add(UserControl, String, Object)方法來建立工作窗格,並將 Explorer 或 Inspector 物件傳遞給 window 參數。 如需建立自訂工作窗格的詳細資訊,請參閱自訂工作窗格概觀。
如需如何為每個開啟的電子郵件訊息建立工作窗格的逐步示範,請參閱逐步解說:在 Outlook 中的電子郵件訊息顯示自訂工作窗格。
Outlook 事件
若要監視 [檔案總管] 視窗的狀態,可以處理下列與 [檔案總管] 相關的事件:
若要監視 [偵測器] 視窗的狀態,可以處理下列與 [偵測器] 相關的事件:
避免在 Outlook 中顯示自訂工作窗格的多個執行個體
若要避免 Outlook 視窗顯示自訂工作窗格的多個執行個體,請在關閉每個視窗時,從 ThisAddIn 類別的 CustomTaskPanes 集合中明確移除自訂工作窗格。 請在視窗關閉時所引發的事件 (例如 ExplorerEvents_10_Event.Close 或 InspectorEvents_10_Event.Close) 中呼叫 Remove 方法。
如果您沒有明確移除自訂工作窗格,Outlook 視窗可能會顯示自訂工作窗格的多個執行個體。 Outlook 有時會回收視窗,而回收的視窗會保留對其附加之任何自訂工作窗格的參考。
Word、InfoPath 和 PowerPoint 2010
Word、InfoPath 和 PowerPoint 2010 會在不同的文件框架視窗中顯示每個文件。 當您建立這些應用程式的自訂工作窗格時,自訂工作窗格只會與特定文件相關聯。 如果使用者開啟不同的文件,則自訂工作窗格會等到先前的文件重新顯示之後才會取消隱藏。
如果要在多份文件中顯示自訂工作窗格,可以在使用者建立新文件或開啟現有文件時,建立自訂工作窗格的新執行個體。 若要這麼做,請在建立或開啟文件時處理引發的事件,然後在事件處理常式中建立工作窗格。 您也可以處理文件事件,依據可見的文件來隱藏或顯示工作窗格。
若要使工作窗格與特定文件視窗產生關聯,請使用 CustomTaskPaneCollection.Add(UserControl, String, Object) 方法來建立工作窗格,並將 Microsoft.Office.Interop.Word.Window (適用於 Word)、Microsoft.Office.Interop.InfoPath.WindowObject (適用於 InfoPath) 或 Microsoft.Office.Interop.PowerPoint.DocumentWindow (適用於 PowerPoint) 傳遞給 window 參數。
如需詳細資訊,請參閱管理多份 Word 和 InfoPath 文件中的工作窗格。 本文是專為 Word 和 InfoPath 而寫,但其中的概念也適用於 PowerPoint 2010,因為這個版本的 PowerPoint 具有單一文件介面。
Word 事件
若要在 Word 中監視文件視窗的狀態,可以處理下列事件:
InfoPath 事件
若要在 InfoPath 中監視文件視窗的狀態,可以處理下列事件:
PowerPoint 事件
若要在 PowerPoint 2010 中監視文件視窗的狀態,可以處理下列事件:
Excel 和 PowerPoint 2007
Excel 和 PowerPoint 2007 會為所有文件 (亦即活頁簿和簡報) 建立單一文件框架視窗。 當您在這些應用程式中建立自訂工作窗格時,應用程式中的每個開啟文件就可以使用工作窗格。 您不需要執行額外的動作,就可以確保已顯示每份文件的工作窗格。
但是,根據作用中的文件,您可能想要隱藏或顯示工作窗格,或是想要在工作窗格中顯示不同的使用者介面 (UI) 項目或資料。 若要這麼做,請在建立、開啟或啟動文件時處理引發的事件,然後在事件處理常式中更新工作窗格。
Excel 事件
若要監視 Excel 活頁簿狀態,可以處理下列事件:
PowerPoint 事件
若要監視 PowerPoint 2007 中簡報的狀態,可以處理下列事件:
範例
下列程式碼範例示範如何在 Excel 增益集中,於 WorkbookActivate 事件的事件處理常式中隱藏或顯示自訂工作窗格。 一旦啟動了每個活頁簿,只有當活頁簿名為 SalesData.xls 時才看得見工作窗格,否則,工作窗格將會隱藏起來。 若要執行此範例,請使用下列程式碼取代 ThisAddIn 類別中的預設 ThisAddIn_Startup 事件處理常式。 此範例假定您的專案包含了名為 UserControl1 的 UserControl。
Dim myUserControl As UserControl1
Dim myCustomTaskPane As Microsoft.Office.Tools.CustomTaskPane
Private Sub ThisAddIn_Startup(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles Me.Startup
myUserControl = New UserControl1()
myCustomTaskPane = Me.CustomTaskPanes.Add(myUserControl, "Sales Task Pane")
End Sub
Private Sub Application_WorkbookActivate(ByVal Wb As Excel.Workbook) _
Handles Application.WorkbookActivate
If Wb.Name = "SalesData.xlsx" Then
myCustomTaskPane.Visible = True
Else
myCustomTaskPane.Visible = False
End If
End Sub
private UserControl1 myUserControl;
private Microsoft.Office.Tools.CustomTaskPane myCustomTaskPane;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
this.Application.WorkbookActivate += new Excel.AppEvents_WorkbookActivateEventHandler(
Application_WorkbookActivate);
myUserControl = new UserControl1();
myCustomTaskPane = this.CustomTaskPanes.Add(myUserControl, "Sales Task Pane");
}
void Application_WorkbookActivate(Excel.Workbook Wb)
{
if (Wb.Name == "SalesData.xlsx")
myCustomTaskPane.Visible = true;
else
myCustomTaskPane.Visible = false;
}
請參閱
工作
逐步解說:在 Outlook 中的電子郵件訊息顯示自訂工作窗格
HOW TO:在 Outlook 中的電子郵件訊息顯示自訂工作窗格
其他資源
變更記錄
日期 |
記錄 |
原因 |
---|---|---|
2010 年 5 月 |
新增有關管理 PowerPoint 2010 中之自訂工作窗格的最新詳細資料。 |
資訊加強。 |