Exemplarische Vorgehensweise: Anzeigen von benutzerdefinierten Aufgabenbereichen mit E-Mail-Nachrichten in Outlook
In dieser exemplarischen Vorgehensweise wird veranschaulicht, wie eine eindeutige Instanz eines benutzerdefinierten Aufgabenbereichs mit jeder erstellten oder geöffneten E-Mail-Nachricht angezeigt wird. Benutzer können den benutzerdefinierten Aufgabenbereich über eine Schaltfläche auf dem Menüband jeder E-Mail anzeigen oder ausblenden.
Gilt für: Die Informationen in diesem Thema gelten für VSTO-Add-In-Projekte für Outlook. Weitere Informationen finden Sie unter features available by Office-App lication and project type.
Wenn Sie einen benutzerdefinierten Aufgabenbereich mit mehreren Explorer- oder Inspektor-Fenstern anzeigen möchten, müssen Sie eine Instanz des benutzerdefinierten Aufgabenbereichs für jedes geöffnete Fenster erstellen. Weitere Informationen zum Verhalten von benutzerdefinierten Aufgabenbereichen in Outlook-Fenstern finden Sie unter "Benutzerdefinierte Aufgabenbereiche".
Hinweis
In dieser exemplarischen Vorgehensweise wird der VSTO-Add-In-Code in kleinen Abschnitten dargestellt, um die dem Code zugrunde liegende Logik einfacher zu erläutern.
In dieser exemplarischen Vorgehensweise werden die folgenden Aufgaben veranschaulicht:
Entwerfen der Benutzeroberfläche des benutzerdefinierten Aufgabenbereichs
Erstellen einer benutzerdefinierten Menüband-Benutzeroberfläche
Anzeigen der benutzerdefinierten Menüband-Benutzeroberfläche mit E-Mail-Nachrichten.
Erstellen einer Klasse zum Verwalten von Inspektor-Fenstern und benutzerdefinierten Aufgabenbereichen
Initialisieren und Bereinigen von Ressourcen, die durch das VSTO-Add-In verwendet werden
Synchronisieren der Umschaltfläche des Menübands mit dem benutzerdefinierten Aufgabenbereich
Hinweis
Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio angezeigt als die in den folgenden Anweisungen aufgeführten. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Personalisieren von Visual Studio-IDE.
Voraussetzungen
Zum Abschließen dieser exemplarischen Vorgehensweise benötigen Sie Folgendes:
Eine Edition von Visual Studio, die die Microsoft Office-Entwicklungstools umfasst. Weitere Informationen finden Sie unter Konfigurieren eines Computers zum Entwickeln von Office-Lösungen.
Microsoft Outlook 2013 oder Microsoft Outlook 2010.
Erstellen des Projekts
Benutzerdefinierte Aufgabenbereiche werden in VSTO-Add-Ins implementiert. Erstellen Sie zunächst ein VSTO-Add-In-Projekt für Outlook.
So erstellen Sie ein neues Projekt
Erstellen Sie ein Outlook-Add-In -Projekt mit dem Namen OutlookMailItemTaskPane. Verwenden Sie die Projektvorlage Outlook-Add-In . Weitere Informationen finden Sie unter How to: Create Office projects in Visual Studio.
Visual Studio öffnet die Codedatei ThisAddIn.cs oder ThisAddIn.vb und fügt das OutlookMailItemTaskPane-Projekt zu Projektmappen-Explorer hinzu.
Entwerfen der Benutzeroberfläche des benutzerdefinierten Aufgabenbereichs
Es gibt keinen visuellen Designer für benutzerdefinierte Aufgabenbereiche, Sie können aber dennoch ein Benutzersteuerelement mit der gewünschten Benutzeroberfläche entwerfen. Der benutzerdefinierte Aufgabenbereich in diesem VSTO-Add-In entspricht einer einfachen Benutzeroberfläche, die ein TextBox -Steuerelement enthält. Im weiteren Verlauf dieser exemplarischen Vorgehensweise fügen Sie dem benutzerdefinierten Aufgabenbereich das Benutzersteuerelement hinzu.
So entwerfen Sie die Benutzeroberfläche des benutzerdefinierten Aufgabenbereichs
Klicken Sie im Projektmappen-Explorerauf das Projekt OutlookMailItemTaskPane .
Klicken Sie im Menü Projekt auf Benutzersteuerelement hinzufügen.
Ändern Sie im Dialogfeld Neues Element hinzufügen den Namen des Benutzersteuerelements in TaskPaneControl, und klicken Sie dann auf Hinzufügen.
Das Benutzersteuerelement wird im Designer geöffnet.
Ziehen Sie von der Registerkarte Allgemeine Steuerelemente der Toolboxein TextBox -Steuerelement auf das Benutzersteuerelement.
Entwerfen der Benutzeroberfläche des Menübands
Eines der Ziele für dieses VSTO-Add-In besteht darin, Benutzern eine Möglichkeit zu geben, den benutzerdefinierten Aufgabenbereich aus dem Menüband jeder E-Mail-Nachricht auszublenden oder anzuzeigen. Wenn Sie die Benutzeroberfläche bereitstellen möchten, erstellen Sie eine benutzerdefinierte Menüband-Benutzeroberfläche mit einer Umschaltfläche, über die Benutzer den benutzerdefinierten Aufgabenbereich durch Klicken anzeigen oder ausblenden können.
So erstellen Sie eine benutzerdefinierte Menüband-Benutzeroberfläche
Klicken Sie im Menü Projekt auf Neues Element hinzufügen.
Wählen Sie im Dialogfeld Neues Element hinzufügen die Option Menüband (Visueller Designer)aus.
Ändern Sie den Namen des neuen Menübands in ManageTaskPaneRibbon, und klicken Sie auf Hinzufügen.
Die Datei ManageTaskPaneRibbon.cs oder ManageTaskPaneRibbon.vb wird im Menüband-Designer geöffnet. Sie enthält eine Standardregisterkarte und eine Gruppe.
Klicken Sie im Menüband-Designer auf group1.
Legen Sie im Fenster Eigenschaften die Eigenschaft Label auf Task Pane Managerfest.
Ziehen Sie ein ToggleButton-Steuerelement von der Registerkarte Steuerelemente für Office-Menübänder der Toolboxauf die Gruppe Task Pane Manager .
Klicken Sie auf toggleButton1.
Legen Sie im Fenster Eigenschaften die Label -Eigenschaft auf Aufgabenbereich anzeigenfest.
Anzeigen der benutzerdefinierten Benutzeroberfläche des Menübands mit E-Mail-Nachrichten
Der in dieser exemplarischen Vorgehensweise erstellte benutzerdefinierte Aufgabenbereich ist so konzipiert, dass er nur in Inspektor-Fenstern angezeigt wird, die E-Mails enthalten. Lesen Sie die Eigenschaften daher so fest, dass die benutzerdefinierte Menüband-Benutzeroberfläche nur in diesen Fenstern angezeigt wird.
So zeigen Sie die benutzerdefinierte Menüband-Benutzeroberfläche mit E-Mail-Nachrichten an
Klicken Sie im Menüband-Designer auf das Menüband ManageTaskPaneRibbon .
Klicken Sie im Fenster Eigenschaften auf die Dropdownliste neben RibbonType, und wählen Sie Microsoft.Outlook.Mail.Compose und Microsoft.Outlook.Mail.Readaus.
Erstellen einer Klasse zum Verwalten von Inspektorfenstern und benutzerdefinierten Aufgabenbereichen
Es gibt mehrere Fälle, in denen das VSTO-Add-In identifizieren muss, welcher benutzerdefinierte Aufgabenbereich einer bestimmten E-Mail-Nachricht zugeordnet ist. Dazu gehören folgende Situationen:
Wenn der Benutzer eine E-Mail-Nachricht schließt. In diesem Fall muss das VSTO-Add-In den entsprechenden benutzerdefinierten Aufgabenbereich entfernen, um sicherzustellen, dass die vom VSTO-Add-In verwendeten Ressourcen ordnungsgemäß bereinigt werden.
Der Benutzer schließt den benutzerdefinierten Aufgabenbereich. In diesem Fall muss das VSTO-Add-In den Status der Umschaltfläche im Menüband der E-Mail-Nachricht aktualisieren.
Wenn der Benutzer auf die Umschaltfläche im Menüband klickt. In diesem Fall muss das VSTO-Add-In den entsprechenden Aufgabenbereich anzeigen oder ausblenden.
Um das VSTO-Add-In zu aktivieren, um nachzuverfolgen, welcher benutzerdefinierte Aufgabenbereich jeder geöffneten E-Mail-Nachricht zugeordnet ist, erstellen Sie eine benutzerdefinierte Klasse, die Paare und Inspector CustomTaskPane Objekte umschließt. Diese Klasse erstellt ein neues benutzerdefiniertes Aufgabenbereichsobjekt für jede E-Mail-Nachricht und löscht den benutzerdefinierten Aufgabenbereich, wenn die entsprechende E-Mail-Nachricht geschlossen wird.
So erstellen Sie eine Klasse zum Verwalten von Inspektorfenstern und benutzerdefinierten Aufgabenbereichen
Klicken Sie im Projektmappen-Explorermit der rechten Maustaste auf die Datei ThisAddIn.cs oder ThisAddIn.vb , und klicken Sie dann auf Code anzeigen.
Fügen Sie am Anfang der Datei die folgenden -Anweisungen hinzu.
Fügen Sie der Datei ThisAddIn.cs oder ThisAddIn.vb folgenden Code außerhalb der
ThisAddIn
-Klasse hinzu (für Visual C# fügen Sie diesen Code imOutlookMailItemTaskPane
-Namespace hinzu). DieInspectorWrapper
-Klasse verwaltet ein Paar von Inspector - und CustomTaskPane -Objekten. Sie schließen die Definition dieser Klasse in den folgenden Schritten ab.Fügen Sie nach dem Code, den Sie im vorherigen Schritt hinzugefügt haben, den folgenden Konstruktor hinzu. Dieser Konstruktor erstellt und initialisiert einen neuen benutzerdefinierten Aufgabenbereich, der dem übergebenen Inspector -Objekt zugeordnet ist. In C# fügt der Konstruktor außerdem Ereignishandler an das Close -Ereignis des Inspector -Objekts und das VisibleChanged -Ereignis des CustomTaskPane -Objekts an.
public InspectorWrapper(Outlook.Inspector Inspector) { inspector = Inspector; ((Outlook.InspectorEvents_Event)inspector).Close += new Outlook.InspectorEvents_CloseEventHandler(InspectorWrapper_Close); taskPane = Globals.ThisAddIn.CustomTaskPanes.Add( new TaskPaneControl(), "My task pane", inspector); taskPane.VisibleChanged += new EventHandler(TaskPane_VisibleChanged); }
Fügen Sie nach dem Code, den Sie im vorherigen Schritt hinzugefügt haben, die folgende Methode hinzu. Diese Methode ist ein Ereignishandler für das VisibleChanged -Ereignis des in der CustomTaskPane -Klasse enthaltenen
InspectorWrapper
-Objekts. Dieser Code aktualisiert den Zustand der Umschaltfläche, sobald der Benutzer den benutzerdefinierten Aufgabenbereich öffnet oder schließt.Fügen Sie nach dem Code, den Sie im vorherigen Schritt hinzugefügt haben, die folgende Methode hinzu. Diese Methode ist ein Ereignishandler für das Close Ereignis des Inspector Objekts, das die aktuelle E-Mail-Nachricht enthält. Der Ereignishandler gibt Ressourcen frei, wenn die E-Mail-Nachricht geschlossen wird. Der Ereignishandler entfernt auch den aktuellen benutzerdefinierten Aufgabenbereich aus der
CustomTaskPanes
-Auflistung. Dadurch können mehrere Instanzen des benutzerdefinierten Aufgabenbereichs verhindert werden, wenn die nächste E-Mail-Nachricht geöffnet wird.void InspectorWrapper_Close() { if (taskPane != null) { Globals.ThisAddIn.CustomTaskPanes.Remove(taskPane); } taskPane = null; Globals.ThisAddIn.InspectorWrappers.Remove(inspector); ((Outlook.InspectorEvents_Event)inspector).Close -= new Outlook.InspectorEvents_CloseEventHandler(InspectorWrapper_Close); inspector = null; }
Fügen Sie nach dem Code, den Sie im vorherigen Schritt hinzugefügt haben, den folgenden Code hinzu. Weiter unten in dieser exemplarischen Vorgehensweise rufen Sie diese Eigenschaft von einer Methode in der benutzerdefinierten Menüband-Benutzeroberfläche auf, um den benutzerdefinierten Aufgabenbereich anzuzeigen oder auszublenden.
Initialisieren und sauber ressourcen, die vom Add-In verwendet werden
Fügen Sie der ThisAddIn
-Klasse Code hinzu, durch den das VSTO-Add-In beim Laden initialisiert und die vom VSTO-Add-In verwendeten Ressourcen beim Entladen des Add-Ins bereinigt werden. Sie initialisieren das VSTO-Add-In, indem Sie einen Ereignishandler für das NewInspector Ereignis einrichten und alle vorhandenen E-Mail-Nachrichten an diesen Ereignishandler übergeben. Sobald das VSTO-Add-In entladen wird, trennen Sie den Ereignishandler und bereinigen die vom VSTO-Add-In verwendeten Objekte.
So initialisieren und bereinigen Sie die vom VSTO-Add-In verwendeten Ressourcen
Suchen Sie in der Datei ThisAddIn.cs oder ThisAddIn.vb die Definition der
ThisAddIn
-Klasse.Fügen Sie der
ThisAddIn
-Klasse die folgenden Deklarationen hinzu:Das
inspectorWrappersValue
-Feld enthält alle vom VSTO-Add-In verwalteten Inspector - undInspectorWrapper
-Objekte.Das
inspectors
-Feld behält einen Verweis auf die Auflistung von Inspektor-Fenstern in der aktuellen Outlook-Instanz. Dieser Verweis verhindert, dass der Garbage Collector den Arbeitsspeicher freigibt, der den Ereignishandler für das NewInspector -Ereignis enthält, das Sie im nächsten Schritt deklarieren.
Ersetzen Sie die
ThisAddIn_Startup
-Methode durch den folgenden Code. Dieser Code fügt einen Ereignishandler an das NewInspector -Ereignis an und übergibt alle vorhandenen Inspector -Objekte an den Ereignishandler. Wenn der Benutzer das VSTO-Add-In lädt, nachdem Outlook bereits ausgeführt wurde, verwendet das VSTO-Add-In diese Informationen, um benutzerdefinierte Aufgabenbereiche für alle bereits geöffneten E-Mail-Nachrichten zu erstellen.private void ThisAddIn_Startup(object sender, System.EventArgs e) { inspectors = this.Application.Inspectors; inspectors.NewInspector += new Outlook.InspectorsEvents_NewInspectorEventHandler( Inspectors_NewInspector); foreach (Outlook.Inspector inspector in inspectors) { Inspectors_NewInspector(inspector); } }
Ersetzen Sie die
ThisAddIn_ShutDown
-Methode durch den folgenden Code. Dieser Code trennt den NewInspector -Ereignishandler und bereinigt die vom VSTO-Add-In verwendeten Objekte.Fügen Sie der NewInspector -Klasse den folgenden
ThisAddIn
-Ereignishandler hinzu. Wenn ein neues Inspector eine E-Mail-Nachricht enthält, erstellt die Methode eine Instanz eines neuenInspectorWrapper
Objekts, um die Beziehung zwischen der E-Mail-Nachricht und dem entsprechenden Aufgabenbereich zu verwalten.Fügen Sie der
ThisAddIn
-Klasse folgende Eigenschaft hinzu. Diese Eigenschaft macht das privateinspectorWrappersValue
-Feld für Code außerhalb derThisAddIn
-Klasse verfügbar.
Prüfpunkt
Erstellen Sie Ihr Projekt, um sicherzustellen, dass es ohne Fehler kompiliert wird.
So erstellen Sie das Projekt
- Klicken Sie im Projektmappen-Explorermit der rechten Maustaste auf das Projekt OutlookMailItemTaskPane , und klicken Sie dann auf Erstellen. Vergewissern Sie sich, dass das Projekt ohne Fehler kompiliert wurde.
Synchronisieren der Umschaltfläche des Menübands mit dem benutzerdefinierten Aufgabenbereich
Die Umschaltfläche erscheint gedrückt, wenn der Aufgabenbereich sichtbar ist, und nicht gedrückt, wenn der Aufgabenbereich ausgeblendet ist. Wenn Sie den Zustand der Schaltfläche mit dem benutzerdefinierten Aufgabenbereich synchronisieren möchten, ändern Sie den Click -Ereignishandler der Umschaltfläche.
So synchronisieren Sie den benutzerdefinierten Aufgabenbereich mit der Umschaltfläche
Doppelklicken Sie im Menüband-Designer auf die Umschaltfläche Aufgabenbereich anzeigen .
Visual Studio generiert automatisch einen Ereignishandler namens
toggleButton1_Click
, der das Click -Ereignis der Umschaltfläche verarbeitet. Visual Studio öffnet außerdem die Datei ManageTaskPaneRibbon.cs oder ManageTaskPaneRibbon.vb im Code-Editor.Fügen Sie die folgenden Anweisungen am Anfang der Datei ManageTaskPaneRibbon.cs oder ManageTaskPaneRibbon.vb ein.
Ersetzen Sie den
toggleButton1_Click
-Ereignishandler durch den folgenden Code. Wenn der Benutzer auf die Umschaltfläche klickt, wird der benutzerdefinierte Aufgabenbereich, der dem aktuellen Inspektor-Fenster zugeordnet ist, durch diese Methode angezeigt oder ausgeblendet.private void toggleButton1_Click(object sender, RibbonControlEventArgs e) { Outlook.Inspector inspector = (Outlook.Inspector)e.Control.Context; InspectorWrapper inspectorWrapper = Globals.ThisAddIn.InspectorWrappers[inspector]; CustomTaskPane taskPane = inspectorWrapper.CustomTaskPane; if (taskPane != null) { taskPane.Visible = ((RibbonToggleButton)sender).Checked; } }
Testen des Projekts
Sobald Sie das Debuggen des Projekts starten, wird Outlook geöffnet und das VSTO-Add-In geladen. Das VSTO-Add-In zeigt eine eindeutige Instanz des benutzerdefinierten Aufgabenbereichs mit jeder geöffneten E-Mail-Nachricht an. Erstellen Sie mehrere neue E-Mail-Nachrichten, um den Code zu testen.
So testen Sie das VSTO-Add-In
Drücken Sie F5.
Klicken Sie in Outlook auf "Neu ", um eine neue E-Mail-Nachricht zu erstellen.
Klicken Sie im Menüband der E-Mail-Nachricht auf die Registerkarte "Add-Ins " und dann auf die Schaltfläche "Aufgabenbereich anzeigen".
Vergewissern Sie sich, dass ein Aufgabenbereich mit dem Titel "Mein Aufgabenbereich " mit der E-Mail-Nachricht angezeigt wird.
Geben Sie im Aufgabenbereich Erster Aufgabenbereich in das Textfeld ein.
Schließen Sie den Aufgabenbereich.
Überprüfen Sie, ob sich der Zustand der Schaltfläche Aufgabenbereich anzeigen ändert, sodass sie nicht mehr gedrückt erscheint.
Klicken Sie erneut auf die Schaltfläche Aufgabenbereich anzeigen .
Stellen Sie sicher, dass der Aufgabenbereich geöffnet wird und das Textfeld weiterhin die Zeichenfolge Erster Aufgabenbereichenthält.
Klicken Sie in Outlook auf "Neu ", um eine zweite E-Mail-Nachricht zu erstellen.
Klicken Sie im Menüband der E-Mail-Nachricht auf die Registerkarte "Add-Ins " und dann auf die Schaltfläche "Aufgabenbereich anzeigen".
Vergewissern Sie sich, dass ein Aufgabenbereich mit dem Titel "Mein Aufgabenbereich " mit der E-Mail-Nachricht angezeigt wird und das Textfeld in diesem Aufgabenbereich leer ist.
Geben Sie im Aufgabenbereich Zweiter Aufgabenbereich in das Textfeld ein.
Ändern Sie den Fokus auf die erste E-Mail-Nachricht.
Stellen Sie sicher, dass der Aufgabenbereich, der dieser E-Mail-Nachricht zugeordnet ist, weiterhin den ersten Aufgabenbereich im Textfeld anzeigt.
Das VSTO-Add-In behandelt auch komplexere Szenarien, die Sie ausprobieren können. Beispielsweise können Sie das Verhalten beim Anzeigen von E-Mails mithilfe der Schaltflächen "Nächstes Element" und "Vorheriges Element" testen. Sie können das Verhalten auch testen, wenn Sie das VSTO-Add-In entladen, mehrere E-Mail-Nachrichten öffnen und dann das VSTO-Add-In erneut laden.
Nächste Schritte
Weitere Informationen über das Erstellen von benutzerdefinierten Aufgabenbereichen finden Sie in diesen Themen:
Erstellen Sie einen benutzerdefinierten Aufgabenbereich in einem VSTO-Add-In für eine andere Anwendung. Weitere Informationen zu den Anwendungen, die benutzerdefinierte Aufgabenbereiche unterstützen, finden Sie unter "Benutzerdefinierte Aufgabenbereiche".
Automatisieren einer Microsoft Office-Anwendung mithilfe eines benutzerdefinierten Aufgabenbereichs. Weitere Informationen finden Sie unter Walkthrough: Automate an application from a custom task pane.
Erstellen einer Menübandschaltfläche in Excel, über die ein benutzerdefinierter Aufgabenbereich ausgeblendet oder angezeigt werden kann. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Synchronisieren eines benutzerdefinierten Aufgabenbereichs mit einer Menübandschaltfläche.
Zugehöriger Inhalt
- Benutzerdefinierte Aufgabenbereiche
- Vorgehensweise: Hinzufügen eines benutzerdefinierten Aufgabenbereichs zu einer Anwendung
- Exemplarische Vorgehensweise: Automatisieren einer Anwendung aus einem benutzerdefinierten Aufgabenbereich
- Exemplarische Vorgehensweise: Synchronisieren eines benutzerdefinierten Aufgabenbereichs mit einer Menübandschaltfläche
- Übersicht über das Menüband
- Übersicht über das Outlook-Objektmodell
- Zugreifen auf das Menüband zur Laufzeit