Freigeben über


Verwalten von benutzerdefinierten Aufgabenbereichen in mehreren Anwendungsfenstern

Aktualisiert: November 2007

Betrifft

Die Informationen in diesem Thema gelten nur für die angegebenen Visual Studio Tools for Office-Projekte und Microsoft Office-Anwendungen.

Projekttyp

  • Projekte auf Anwendungsebene

Microsoft Office-Anwendung

  • Excel 2007

  • InfoPath 2007

  • Outlook 2007

  • PowerPoint 2007

  • Word 2007

Weitere Informationen finden Sie unter Verfügbare Features nach Anwendung und Projekttyp.

Wenn Sie einen benutzerdefinierten Aufgabenbereich in einer Anwendung erstellen, die mehrere Fenster zum Anzeigen von Dokumenten und anderen Elementen verwendet, müssen Sie in zusätzlichen Schritten sicherstellen, dass der Aufgabenbereich sichtbar ist, wenn der Benutzer es erwartet.

Benutzerdefinierte Aufgabenbereiche sind in allen Anwendungen einem Dokumentrahmenfenster zugeordnet, das eine Ansicht eines Dokuments oder Elements für den Benutzer enthält. Der Aufgabenbereich ist nur sichtbar, wenn das zugeordnete Fenster sichtbar ist. Nicht alle Anwendungen verwenden Dokumentrahmenfenster aber auf die gleiche Weise.

Für die folgenden Anwendungsgruppen gelten unterschiedliche Entwicklungsanforderungen:

  • Outlook

  • Word und InfoPath

  • Excel und PowerPoint

Outlook

Wenn Sie einen benutzerdefinierten Aufgabenbereich für Outlook erstellen, ist dieser einem bestimmten Explorer- oder Inspektor-Fenster zugeordnet. Explorer-Fenster sind Fenster, die den Inhalt eines Ordner anzeigen. Inspektor-Fenster sind Fenster, die ein Element, z. B. eine E-Mail oder eine Aufgabe, anzeigen.

Wenn Sie einen benutzerdefinierten Aufgabenbereich mit mehreren Explorer- oder Inspektor-Fenstern anzeigen möchten, müssen Sie eine neue Instanz des benutzerdefinierten Aufgabenbereichs erstellen, wenn ein neues Explorer- oder Inspektor-Fenster geöffnet wird. Behandeln Sie dazu ein Ereignis, das ausgelöst wird, wenn ein Explorer- oder Inspektor-Fenster erstellt wird, und erstellen Sie dann den Aufgabenbereich im Ereignishandler. Sie können auch Explorer- und Inspektor-Ereignisse behandeln, um Aufgabenbereiche abhängig davon auszublenden oder anzuzeigen, welches Fenster angezeigt wird.

Um den Aufgabenbereich einem bestimmten Explorer oder Inspektor zuzuordnen, verwenden Sie die CustomTaskPaneCollection.Add(UserControl, String, Object)-Methode zum Erstellen des Aufgabenbereichs, und übergeben Sie das Explorer-Objekt oder Inspector-Objekt an den window-Parameter. Weitere Informationen zum Erstellen von benutzerdefinierten Aufgabenbereichen finden Sie unter Übersicht über benutzerdefinierte Aufgabenbereiche.

Eine exemplarische Vorgehensweise, die das Erstellen eines Aufgabenbereichs für jede geöffnete E-Mail veranschaulicht, finden Sie unter Exemplarische Vorgehensweise: Anzeigen von benutzerdefinierten Aufgabenbereichen mit E-Mails in Outlook.

Outlook-Ereignisse

Um den Zustand von Explorer-Fenstern zu überwachen, können Sie die folgenden Explorer-bezogenen Ereignisse behandeln:

Um den Zustand von Inspektor-Fenstern zu überwachen, können Sie die folgenden Inspektor-bezogenen Ereignisse behandeln:

Verhindern von mehreren Instanzen eines benutzerdefinierten Aufgabenbereichs in Outlook

Um zu verhindern, dass in Outlook-Fenstern mehrere Instanzen eines benutzerdefinierten Aufgabenbereichs angezeigt werden, müssen Sie den benutzerdefinierten Aufgabenbereich explizit aus der CustomTaskPanes-Auflistung der ThisAddIn-Klasse entfernen, wenn die einzelnen Fenster geschlossen werden. Rufen Sie die Remove-Methode in einem Ereignis auf, das beim Schließen eines Fensters ausgelöst wird, z. B. ExplorerEvents_10_Event.Close oder InspectorEvents_10_Event.Close.

Wenn Sie den benutzerdefinierten Aufgabenbereich nicht explizit entfernen, werden in Outlook-Fenstern möglicherweise mehrere Instanzen des benutzerdefinierten Aufgabenbereichs angezeigt. Fenster werden in Outlook gelegentlich wiederverwendet, und in wiederverwendeten Fenstern werden Verweise auf benutzerdefinierte Aufgabenbereiche beibehalten, die an die Fenster angefügt waren.

Word und InfoPath

Word und InfoPath zeigen jedes Dokument in einem anderen Dokumentrahmenfenster an. Wenn Sie einen benutzerdefinierten Aufgabenbereich für diese Anwendungen erstellen, ist dieser nur einem bestimmten Dokument zugeordnet. Wenn der Benutzer ein anderes Dokument öffnet, wird der benutzerdefinierte Aufgabenbereich ausgeblendet, bis das vorherige Dokument wieder sichtbar ist.

Wenn Sie einen benutzerdefinierten Aufgabenbereich mit mehreren Dokumenten anzeigen möchten, erstellen Sie eine neue Instanz des benutzerdefinierten Aufgabenbereichs, wenn der Benutzer ein neues Dokument erstellt oder ein vorhandenes Dokument öffnet. Behandeln Sie dazu Ereignisse, die ausgelöst werden, wenn ein Dokument erstellt oder geöffnet wird, und erstellen Sie dann den Aufgabenbereich in den Ereignishandlern. Sie können auch Dokumentereignisse behandeln, um Aufgabenbereiche abhängig davon auszublenden oder anzuzeigen, welches Dokument angezeigt wird.

Um den Aufgabenbereich einem bestimmten Dokumentfenster zuzuordnen, verwenden Sie die CustomTaskPaneCollection.Add(UserControl, String, Object)-Methode zum Erstellen des Aufgabenbereichs, und übergeben Sie ein Microsoft.Office.Interop.Word.Window (für Word) oder Microsoft.Office.Interop.InfoPath.WindowObject (für InfoPath) an den window-Parameter. Weitere Informationen zum Erstellen von benutzerdefinierten Aufgabenbereichen finden Sie unter Übersicht über benutzerdefinierte Aufgabenbereiche.

Word-Ereignisse

Um den Zustand von Dokumentfenstern in Word zu überwachen, können Sie die folgenden Ereignisse behandeln:

InfoPath-Ereignisse

Um den Zustand von Dokumentfenstern in InfoPath zu überwachen, können Sie die folgenden Ereignisse behandeln:

Excel und PowerPoint

Excel und PowerPoint erstellen ein Dokumentrahmenfenster für alle Dokumente (d. h. für Arbeitsmappen und Präsentationen). Wenn Sie einen benutzerdefinierten Aufgabenbereich in diesen Anwendungen erstellen, ist der Aufgabenbereich für jedes in der Anwendung geöffnete Dokument verfügbar. Sie müssen keine zusätzlichen Arbeitsschritte ausführen, um sicherzustellen, dass der Aufgabenbereich für das jeweilige Dokument angezeigt wird.

Je nach aktivem Dokument möchten Sie aber den Aufgabenbereich möglicherweise ausblenden oder anzeigen, oder Sie möchten andere Benutzeroberflächenelemente oder Daten im Aufgabenbereich anzeigen. Behandeln Sie dazu Ereignisse, die ausgelöst werden, wenn ein Dokument erstellt, geöffnet oder aktiviert wird, und aktualisieren Sie dann den Aufgabenbereich in den Ereignishandlern.

Excel-Ereignisse

Um den Zustand von Arbeitsmappen in Excel zu überwachen, können Sie die folgenden Ereignisse behandeln:

PowerPoint-Ereignisse

Um den Zustand von Präsentationen in PowerPoint zu überwachen, können Sie die folgenden Ereignisse behandeln:

  • 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

Beispiel

Im folgenden Codebeispiel wird veranschaulicht, wie ein benutzerdefinierter Aufgabenbereich in einem Ereignishandler für das WorkbookActivate-Ereignis in einem Excel-Add-In ausgeblendet oder angezeigt wird. Bei der Aktivierung der einzelnen Arbeitsmappen wird der Aufgabenbereich nur angezeigt, wenn die Arbeitsmappe den Namen SalesData.xls trägt; anderenfalls wird der Aufgabenbereich ausgeblendet. Um dieses Beispiel auszuführen, ersetzen Sie den Standardereignishandler ThisAddIn_Startup, den Visual Studio Tools for Office in der ThisAddIn-Klasse generiert, durch den folgenden Code. In diesem Beispiel wird davon ausgegangen, dass das Projekt ein UserControl mit dem Namen UserControl1 enthält.

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;
}

Siehe auch

Aufgaben

Gewusst wie: Hinzufügen eines benutzerdefinierten Aufgabenbereichs zu einer Anwendung

Exemplarische Vorgehensweise: Anzeigen von benutzerdefinierten Aufgabenbereichen mit E-Mails in Outlook

Gewusst wie: Anzeigen von benutzerdefinierten Aufgabenbereichen mit E-Mails in Outlook

Exemplarische Vorgehensweise: Synchronisieren eines benutzerdefinierten Aufgabenbereichs mit einer Multifunktionsleistenschaltfläche

Konzepte

Übersicht über benutzerdefinierte Aufgabenbereiche