Share via


管理多個應用程式視窗中的自訂工作窗格

更新:2007 年 11 月

適用於

本主題中的資訊只適用於指定的 Visual Studio Tools for Office 專案和 Microsoft Office 應用程式。

專案類型

  • 應用程式層級專案

Microsoft Office 應用程式

  • Excel 2007

  • InfoPath 2007

  • Outlook 2007

  • PowerPoint 2007

  • Word 2007

如需詳細資訊,請參閱依應用程式和專案類型提供的功能

在使用多重視窗的應用程式中建立自訂工作窗格以顯示文件和其他項目時,需要採取額外步驟以確保工作窗格能夠在使用者需要時顯示。

所有應用程式中的自訂工作窗格會與文件框架視窗產生關聯,而該框架視窗會對使用者呈現文件或項目的檢視。看得見相關聯的視窗時才看得見工作窗格。但是,並非所有使用應用程式都以相同方式來使用文件框架視窗。

下列應用程式群組具有不同的開發需求:

  • Outlook

  • Word 和 InfoPath

  • Excel 和 PowerPoint

Outlook

當您建立 Outlook 的自訂工作窗格時,自訂工作窗格將與特定檔案總管或偵測器視窗相關聯。檔案總管視窗可顯示資料夾內容,而偵測器視窗則會顯示電子郵件訊息或工作之類的項目。

如果要在多個檔案總管或偵測器視窗中顯示自訂工作窗格,您需要在檔案總管或偵測器視窗開啟時,建立自訂工作窗格的新執行個體。若要這麼做,請在建立檔案總管或偵測器視窗時處理引發的事件,然後在事件處理常式中建立工作窗格。您也可以處理檔案總管與偵測器事件,以依據可見的視窗來隱藏或顯示工作窗格。

若要將工作窗格與特定檔案總管或偵測器產生關聯,請使用 CustomTaskPaneCollection.Add(UserControl, String, Object)方法來建立工作窗格,並將 ExplorerInspector 物件傳遞給 window 參數。如需建立自訂工作窗格的詳細資訊,請參閱自訂工作窗格概觀

如需如何為每個開啟的電子郵件訊息建立工作窗格的逐步示範,請參閱逐步解說:在 Outlook 中的電子郵件訊息顯示自訂工作窗格

Outlook 事件

若要監視 [檔案總管] 視窗的狀態,可以處理下列與 [檔案總管] 相關的事件:

若要監視 [偵測器] 視窗的狀態,可以處理下列與 [偵測器] 相關的事件:

避免在 Outlook 中顯示自訂工作窗格的多個執行個體

若要避免 Outlook 視窗顯示自訂工作窗格的多個執行個體,請在關閉每個視窗時,從 ThisAddIn 類別的 CustomTaskPanes 集合中明確移除自訂工作窗格。請在視窗關閉時所引發的事件 (例如 ExplorerEvents_10_Event.CloseInspectorEvents_10_Event.Close) 中呼叫 Remove 方法。

如果您沒有明確移除自訂工作窗格,Outlook 視窗可能會顯示自訂工作窗格的多個執行個體。Outlook 有時會回收視窗,而回收的視窗會保留對其附加之任何自訂工作窗格的參考。

Word 和 InfoPath

Word 和 InfoPath 會在不同的文件框架視窗中顯示每個文件。當您建立這些應用程式的自訂工作窗格時,自訂工作窗格只會與特定文件相關聯。如果使用者開啟不同的文件,則自訂工作窗格會等到先前的文件重新顯示之後才會取消隱藏。

如果要在多份文件中顯示自訂工作窗格,可以在使用者建立新文件或開啟現有文件時,建立自訂工作窗格的新執行個體。若要這麼做,請在建立或開啟文件時處理引發的事件,然後在事件處理常式中建立工作窗格。您也可以處理文件事件,依據可見的文件來隱藏或顯示工作窗格。

若要使工作窗格與特定文件視窗產生關聯,請使用 CustomTaskPaneCollection.Add(UserControl, String, Object) 方法來建立工作窗格,並將 Microsoft.Office.Interop.Word.Window (適用於 Word) 或 Microsoft.Office.Interop.InfoPath.WindowObject (適用於 InfoPath) 傳遞給 window 參數。如需建立自訂工作窗格的詳細資訊,請參閱自訂工作窗格概觀

Word 事件

若要在 Word 中監視文件視窗的狀態,可以處理下列事件:

InfoPath 事件

若要在 InfoPath 中監視文件視窗的狀態,可以處理下列事件:

Excel 和 PowerPoint

Excel 和 PowerPoint 會針對所有文件建立一個文件框架視窗 (亦即,針對活頁簿和簡報)。當您在這些應用程式中建立自訂工作窗格時,應用程式中的每個開啟文件就可以使用工作窗格。您不需要執行額外的動作,就可以確保已顯示每份文件的工作窗格。

但是,根據作用中的文件,您可能想要隱藏或顯示工作窗格,或是想要在工作窗格中顯示不同的使用者介面 (UI) 項目或資料。若要這麼做,請在建立、開啟或啟動文件時處理引發的事件,然後在事件處理常式中更新工作窗格。

Excel 事件

若要監視 Excel 活頁簿狀態,可以處理下列事件:

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

範例

下列程式碼範例示範如何在 Excel 增益集中,於 WorkbookActivate 事件的事件處理常式中隱藏或顯示自訂工作窗格。一旦啟動了每個活頁簿,只有當活頁簿名為 SalesData.xls 時才看得見工作窗格,否則,工作窗格將會隱藏起來。若要執行此範例,請使用下列程式碼取代 Visual Studio Tools for Office 在 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;
}

請參閱

工作

HOW TO:在應用程式中加入自訂工作窗格

逐步解說:在 Outlook 中的電子郵件訊息顯示自訂工作窗格

HOW TO:在 Outlook 中的電子郵件訊息顯示自訂工作窗格

逐步解說:使用功能區按鈕同步處理自訂工作窗格

概念

自訂工作窗格概觀