Exemplarische Vorgehensweise: Importieren eines in Outlook entworfenen Formularbereichs

Diese exemplarische Vorgehensweise zeigt, wie in Microsoft Office Outlook ein Formularbereich entworfen und dieser anschließend mithilfe des Assistenten Neuer Formularbereich in ein Outlook-Add-In-Projekt importiert wird.Durch den Entwurf eines Formularbereichs in Outlook können dem Formularbereich systemeigene Outlook-Steuerelemente hinzugefügt werden, die an Outlook-Daten gebunden werden.Nach dem Importieren des Formularbereichs können die Ereignisse jedes Steuerelements behandelt werden.

Betrifft: Die Informationen in diesem Thema betreffen Projekte auf Anwendungsebene für Outlook 2013 und Outlook 2010. Weitere Informationen finden Sie unter Verfügbare Funktionen nach Office-Anwendung und Projekttyp.

In dieser exemplarischen Vorgehensweise werden die folgenden Aufgaben veranschaulicht:

  • Entwerfen eines Formularbereichs mithilfe des Formularbereich-Designers in Outlook

  • Importieren eines Formularbereichs in ein Outlook-Add-In-Projekt

  • Behandeln der Ereignisse von Steuerelementen für den Formularbereich

HinweisHinweis

Ihr Computer zeigt möglicherweise für einige der Elemente der Visual Studio-Benutzeroberfläche in der folgenden Anleitung andere Namen oder Standorte an. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

Vorbereitungsmaßnahmen

Zum Durchführen dieser exemplarischen Vorgehensweise benötigen Sie die folgenden Komponenten:

-

Eine Version von Visual Studio 2012, die die Microsoft Office-Entwicklungstools einschließt. Weitere Informationen finden Sie unter [Konfigurieren eines Computers zum Entwickeln von Office-Lösungen](bb398242\(v=vs.110\).md).
  • Outlook 2013 oder Outlook 2010.
HinweisHinweis

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.Die von Ihnen verwendete Visual Studio-Edition und die Einstellungen legen diese Elemente fest.Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

Link zu Video Eine entsprechende Videodemo finden Sie im Thema zum Erstellen von Outlook-Formularbereichen mit Visual Studio 2008 (möglicherweise in englischer Sprache).

Entwerfen eines Formularbereichs mithilfe des Formularbereich-Designers in Outlook

In diesem Schritt wird ein Formularbereich in Outlook entworfen.Anschließend wird der Formularbereich an einem leicht zu findenden Speicherort gespeichert, damit er in Visual Studio importiert werden kann.

Dieser Beispielformularbereich ersetzt vollständig das übliche Aufgabenformular.Mit diesem Bereich kann der Fortschritt aller Aufgaben verfolgt werden, die vor dem Ausführen der Hauptaufgabe abgeschlossen werden müssen (erforderliche Aufgaben).Im Formularbereich werden eine Liste der erforderlichen Aufgaben und der Abschlussstatus für jede Aufgabe in der Liste angezeigt.Benutzer können der Liste Aufgaben hinzufügen und daraus entfernen.Sie besitzen auch die Möglichkeit, den Abschlussstatus jeder Aufgabe zu aktualisieren.

So entwerfen Sie einen Formularbereich mithilfe des Formularbereich-Designers in Outlook

  1. Starten Sie Microsoft Office Outlook.

  2. In Outlook auf der Registerkarte Entwickler, klicken Sie auf Ein Formular entwerfen.Weitere Informationen finden Sie unter Gewusst wie: Anzeigen der Registerkarte "Entwickler" auf der Multifunktionsleiste.

  3. Klicken Sie im Feld Formular entwerfen auf Aufgabe und anschließend auf Öffnen.

  4. In Outlook auf der Registerkarte Entwickler, in der Gruppe Entwurf, auf Neuer Formularbereich.

    Ein neuer Formularbereich wird geöffnet.Wenn Feldauswahl nicht angezeigt wird, klicken Sie in der Gruppe Extras auf Feldauswahl.

  5. Ziehen Sie das Feld Betreff und das Feld % erledigt von Feldauswahl zum Formularbereich.

  6. Klicken Sie in der Gruppe Extras auf Steuerelement-Toolbox, um die Toolbox zu öffnen.

  7. Ziehen Sie eine Bezeichnung von der Toolbox zum Formularbereich.Ordnen Sie die Bezeichnung unter den Feldern Betreff und % erledigt an.

  8. Klicken Sie mit der rechten Maustaste auf die Bezeichnung, und klicken Sie anschließend auf Erweiterte Eigenschaften.

  9. Legen Sie im Fenster Eigenschaften die Caption-Eigenschaft auf This task depends on the following tasks und die Width-Eigenschaft auf 200 fest, und klicken Sie anschließend auf "Übernehmen".

  10. Ziehen Sie ein ListBox-Steuerelement von der Toolbox zum Formularbereich.Ordnen Sie das Listenfeld unter This task depends on the following tasks an.

  11. Wählen Sie das soeben hinzugefügte Listenfeld aus.

  12. Legen Sie im Fenster Eigenschaften die Width-Eigenschaft auf 300 fest, und klicken Sie anschließend auf Übernehmen.

  13. Ziehen Sie eine Bezeichnung von der Toolbox zum Formularbereich.Ordnen Sie die Bezeichnung unter dem Listenfeld an.

  14. Wählen Sie die soeben hinzugefügte Bezeichnung aus.

  15. Legen Sie im Fenster Eigenschaften die Caption-Eigenschaft auf Select a task to add to the list of dependent tasks und die Width-Eigenschaft auf 200 fest, und klicken Sie anschließend auf "Übernehmen".

  16. Ziehen Sie ein Kombinationsfeld-Steuerelement von der Toolbox zum Formularbereich.Ordnen Sie das Kombinationsfeld unter Select a task to add to the list of dependent tasks an.

  17. Wählen Sie das soeben hinzugefügte Kombinationsfeld aus.

  18. Legen Sie im Fenster Eigenschaften die Width-Eigenschaft auf 300 fest, und klicken Sie anschließend auf Übernehmen.

  19. Ziehen Sie ein CommandButton-Steuerelement aus der Toolbox in den Formularbereich.Ordnen Sie die Befehlsschaltfläche neben dem Kombinationsfeld an.

  20. Wählen Sie die soeben hinzugefügte Befehlsschaltfläche aus.

  21. Legen Sie im Fenster Eigenschaften die Name-Eigenschaft auf "AddDependentTask", die Caption-Eigenschaft auf "Add Dependent Task" und die Breite auf 100 fest. Klicken Sie anschließend auf Übernehmen.

  22. Klicken Sie in Feldauswahl auf Neu.

  23. Geben Sie im Dialogfeld Neues Feld im Feld Name die Zeichenfolge "hiddenField" ein, und klicken Sie dann auf OK.

  24. Ziehen Sie das Feld hiddenField vom Dialogfeld Feldauswahl zum Formularbereich.

  25. Legen Sie im Fenster Eigenschaften die Visible-Eigenschaft auf "0 - False" fest, und klicken Sie anschließend auf Übernehmen.

  26. In Outlook auf der Registerkarte Entwickler, in der Gruppe Entwurf, klicken Sie auf die Schaltfläche Speichern und dann auf Formularbereich speichern unter.

    Nennen Sie den Formularbereich TaskFormRegion, und speichern Sie ihn in einem lokalen Verzeichnis auf dem Computer.

    Outlook speichert den Formularbereich als OFS (Outlook Form Storage)-Datei.Der Formularbereich wird unter dem Namen TaskFormRegion.ofs gespeichert.

  27. Beenden Sie Outlook.

Erstellen eines neuen Outlook-Add-In-Projekts

In diesem Schritt erstellen Sie ein Outlook-Add-In-Projekt.Im späteren Verlauf dieser exemplarischen Vorgehensweise wird der Formularbereich in das Projekt importiert.

So erstellen Sie ein neues Outlook-Add-In-Projekt

  1. Erstellen Sie in Visual Studio ein Outlook-Add-In-Projekt mit der Bezeichnung "TaskAddIn".

  2. Wählen Sie im Dialogfeld Neues Projekt die Option Projektmappenverzeichnis erstellen.

  3. Speichern Sie das Projekt im Standardprojektverzeichnis.

    Weitere Informationen finden Sie unter Gewusst wie: Erstellen von Office-Projekten in Visual Studio.

Importieren des Formularbereichs

Sie können den in Outlook entworfenen Formularbereich mithilfe des Neuer Outlook-Formularbereich-Assistenten in das Outlook-Add-In-Projekt importieren.

So importieren Sie einen Formularbereich in das Outlook-Add-In-Projekt

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das TaskAddIn-Projekt, zeigen Sie auf Hinzufügen und klicken Sie dann auf Neues Element.

  2. Wählen Sie im Bereich Vorlagen die Option Outlook-Formularbereich, nennen Sie die Datei "TaskFormRegion", und klicken Sie anschließend auf Hinzufügen.

    Der Assistent NeuerOutlook-Formularbereich wird gestartet.

  3. Klicken Sie auf der Seite Legen Sie fest, wie der Formularbereich erstellt werden soll auf OFS-Datei (Outlook Form Storage) importieren, und klicken Sie anschließend auf Durchsuchen.

  4. Navigieren Sie im Dialogfeld Speicherort für vorhandene Outlook-Formularbereichsdateien zum Speicherort von "TaskFormRegion.ofs", wählen Sie "TaskFormRegion.ofs", und klicken Sie auf Öffnen und anschließend auf Weiter.

  5. Klicken Sie auf der Seite Wählen Sie den Typ des zu erstellenden Formularbereichs aus auf Alle ersetzen und anschließend auf Weiter.

    Das gesamte Outlook-Formular wird durch einen Formularbereich mit der Bezeichnung Alle ersetzen ersetzt.Weitere Informationen zu Formularbereichtypen finden Sie unter Erstellen von Outlook-Formularbereichen.

  6. Klicken Sie auf der Seite Geben Sie eine Beschreibung ein, und wählen Sie die Anzeigeeinstellungen aus auf Weiter.

  7. Geben Sie auf der Seite Geben Sie die Meldungsklassen an, von denen dieser Formularbereich angezeigt wird im Feld Welche benutzerdefinierten Meldungsklassen sollen in diesem Formularbereich angezeigt werden? Folgendes ein: "IPM.Task.TaskFormRegion". Klicken Sie anschließend auf Fertig stellen.

    Dem Projekt wird eine Datei mit der Bezeichnung TaskFormRegion.cs oder TaskFormRegion.vb hinzugefügt.

Behandeln der Ereignisse von Steuerelementen für den Formularbereich

Der Formularbereich befindet sich nun im Projekt, sodass Code hinzugefügt werden kann, mit dem das Microsoft.Office.Interop.Outlook.OlkCommandButton.Click-Ereignis der Schaltfläche behandelt wird, das dem Formularbereich in Outlook hinzugefügt wurde.

Fügen Sie überdies dem FormRegionShowing-Ereignis Code hinzu, mit dem Steuerelemente für den Formularbereich aktualisiert werden, wenn der Formularbereich angezeigt wird.

So behandeln Sie die Ereignisse von Steuerelementen für den Formularbereich

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf TaskFormRegion.cs oder TaskFormRegion.vb, und klicken Sie anschließend auf Code anzeigen.

    TaskFormRegion.cs oder TaskFormRegion.vb wird im Code-Editor geöffnet.

  2. Fügen Sie der TaskFormRegion-Klasse folgenden Code hinzu.Mit diesem Code wird das Kombinationsfeld für den Formularbereich mit der Betreffzeile jeder Aufgabe im Ordner für Outlook-Aufgaben ausgefüllt.

    Private Sub populateComboBox()
        Dim Application As New Outlook.Application()
        Dim outlookNameSpace As Outlook.NameSpace = _
        Application.GetNamespace("MAPI")
        Dim taskFolder As Outlook.MAPIFolder = _
        outlookNameSpace.GetDefaultFolder _
            (Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderTasks)
        Dim taskItems As Outlook.Items = taskFolder.Items
        Dim task As Outlook.TaskItem
        For Each task In taskItems
            If Not (task.Subject Is Nothing) Then
                comboBox1.AddItem(task.Subject, System.Type.Missing)
            End If
        Next task
        comboBox1.Text = comboBox1.GetItem(0)
    End Sub
    
    private void populateComboBox()
    {
        Outlook.Application Application = new Outlook.Application();
        Outlook.NameSpace outlookNameSpace = Application.GetNamespace("MAPI");
        Outlook.MAPIFolder taskFolder = outlookNameSpace.GetDefaultFolder(
            Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderTasks);
        Outlook.Items taskItems = taskFolder.Items;
        foreach (Outlook.TaskItem task in taskItems)
        {
            if (task.Subject != null)
            {
                comboBox1.AddItem(task.Subject, System.Type.Missing);
            }
        }
        comboBox1.Text = comboBox1.GetItem(0);
    }
    
  3. Fügen Sie der TaskFormRegion-Klasse folgenden Code hinzu.Mit diesem Code werden die folgenden Aufgaben ausgeführt:

    • Sucht Microsoft.Office.Interop.Outlook.TaskItem im Aufgabenordner durch Aufrufen der FindTaskBySubjectName-Hilfsmethode und durch Übergeben des Betreffs der gewünschten Aufgabe.Die FindTaskBySubjectName-Hilfsmethode wird im nächsten Schritt hinzugefügt.

    • Fügt dem Listenfeld für abhängige Aufgaben den Microsoft.Office.Interop.Outlook.TaskItem.Subject-Wert und den Microsoft.Office.Interop.Outlook.TaskItem.PercentComplete-Wert hinzu.

    • Fügt den Betreff der Aufgabe dem ausgeblendeten Feld im Formularbereich hinzu.Im ausgeblendeten Feld werden diese Werte als Teil des Outlook-Elements gespeichert.

    Private Sub AddDependentTask_Click1() Handles addDependentTask.Click
        Dim tempTaskItem As Outlook.TaskItem = FindTaskBySubjectName _
            (comboBox1.Text)
        If Not (tempTaskItem Is Nothing) Then
            Me.listBox1.AddItem(tempTaskItem.PercentComplete.ToString() & _
                "% Complete -- " & tempTaskItem.Subject, System.Type.Missing)
            Me.olkTextBox3.Text = Me.olkTextBox3.Text & "|" & tempTaskItem.Subject
        End If
    End Sub
    
        void AddDependentTask_Click()
        {
            Outlook.TaskItem tempTaskItem = FindTaskBySubjectName(comboBox1.Text);
            if (tempTaskItem != null)
            {
                this.listBox1.AddItem(tempTaskItem.PercentComplete.ToString()
    + "% Complete -- " + tempTaskItem.Subject, System.Type.Missing);
                this.olkTextBox3.Text = this.olkTextBox3.Text + "|" + 
                    tempTaskItem.Subject;
            }
        }
    
  4. Fügen Sie der TaskFormRegion-Klasse folgenden Code hinzu.Mit diesem Code wird die zuvor beschriebene FindTaskBySubjectName-Hilfsmethode bereitgestellt.

    Private Function FindTaskBySubjectName(ByVal subjectName As String) _
        As Outlook.TaskItem
        Dim Application As New Outlook.Application()
        Dim outlookNameSpace As Outlook.NameSpace = _
            Application.GetNamespace("MAPI")
        Dim tasksFolder As Outlook.MAPIFolder = _
            outlookNameSpace.GetDefaultFolder _
                (Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderTasks)
        Dim taskItems As Outlook.Items = tasksFolder.Items
        Dim taskItem As Outlook.TaskItem
        For Each taskItem In taskItems
            If taskItem.Subject = subjectName Then
                Return taskItem
            End If
        Next taskItem
        Return Nothing
    End Function
    
    private Outlook.TaskItem FindTaskBySubjectName(string subjectName)
    {
        Outlook.Application Application = new Outlook.Application();
        Outlook.NameSpace outlookNameSpace = Application.GetNamespace("MAPI");
        Outlook.MAPIFolder tasksFolder =
            outlookNameSpace.GetDefaultFolder(
        Microsoft.Office.Interop.Outlook.
            OlDefaultFolders.olFolderTasks);
        Outlook.Items taskItems = tasksFolder.Items;
        foreach (Outlook.TaskItem taskItem in taskItems)
        {
            if (taskItem.Subject == subjectName)
            {
                return taskItem;
            }
        }
        return null;
    }
    
  5. Fügen Sie der TaskFormRegion-Klasse folgenden Code hinzu.Mit diesem Code werden die folgenden Aufgaben ausgeführt:

    • Aktualisiert das Listenfeld für den Formularbereich mit dem aktuellen Abschlussstatus jeder abhängigen Aufgabe.

    • Analysiert das ausgeblendete Textfeld, um den Betreff jeder abhängigen Aufgabe abzurufen.Anschließend wird jedes Microsoft.Office.Interop.Outlook.TaskItem im Aufgabenordner gesucht, indem die FindTaskBySubjectName-Hilfsmethode aufgerufen und der Betreff jeder Aufgabe übergeben wird.

    • Fügt dem Listenfeld für abhängige Aufgaben den Microsoft.Office.Interop.Outlook.TaskItem.Subject-Wert und den Microsoft.Office.Interop.Outlook.TaskItem.PercentComplete-Wert hinzu.

    Private Sub RefreshTaskListBox()
        listBox1.Clear()
        Dim tempTaskItem As Outlook.TaskItem
        Dim tempArray As [String]() = olkTextBox3.Text.Split(New [Char]() {"|"c})
    
        Dim tempString As String
        For Each tempString In tempArray
            tempTaskItem = FindTaskBySubjectName(tempString)
            If Not (tempTaskItem Is Nothing) Then
                Me.listBox1.AddItem(tempTaskItem.PercentComplete.ToString() & _
                    "% Complete -- " & tempTaskItem.Subject, System.Type.Missing)
            End If
        Next tempString
    End Sub
    
    void RefreshTaskListBox()
    {
        listBox1.Clear();
        Outlook.TaskItem tempTaskItem;
        String[] tempArray = olkTextBox3.Text.Split(new Char[] { '|' });
    
        foreach (string tempString in tempArray)
        {
            tempTaskItem = FindTaskBySubjectName(tempString);
            if (tempTaskItem != null)
            {
                this.listBox1.AddItem(tempTaskItem.PercentComplete.ToString()
                    + "% Complete -- " + tempTaskItem.Subject, 
                        System.Type.Missing);
            }
        }
    }
    
  6. Ersetzen Sie den TaskFormRegion_FormRegionShowing-Ereignishandler durch folgenden Code.Mit diesem Code werden die folgenden Aufgaben ausgeführt:

    • Füllt das Kombinationsfeld im Formularbereich mit dem Namen der Aufgabe aus, wenn der Formularbereich angezeigt wird.

    • Ruft beim Anzeigen des Formularbereichs die RefreshTaskListBox-Hilfsmethode auf.Dadurch werden alle unabhängigen Aufgaben angezeigt, die dem Listenfeld beim vorherigen Öffnen des Elements hinzugefügt wurden.

    Private Sub TaskFormRegion_FormRegionShowing(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles MyBase.FormRegionShowing
        populateComboBox()
        RefreshTaskListBox()
    End Sub
    
    private void TaskFormRegion_FormRegionShowing
        (object sender, EventArgs e)
    {
        populateComboBox();
        RefreshTaskListBox();
        this.addDependentTask.Click += new
        Microsoft.Office.Interop.Outlook.
            OlkCommandButtonEvents_ClickEventHandler(AddDependentTask_Click);
    
    }
    

Testen des Outlook-Formularbereichs

Fügen Sie zum Testen des Formularbereichs der Liste der erforderlichen Aufgaben für den Formularbereich Aufgaben hinzu.Aktualisieren Sie den Abschlussstatus einer erforderlichen Aufgabe, und zeigen Sie anschließend den aktualisierten Abschlussstatus der Aufgabe in der Liste für erforderliche Aufgaben an.

So testen Sie den Formularbereich

  1. Drücken Sie F5, um das Projekt auszuführen.

    Outlook wird gestartet.

  2. In Outlook Startseite auf der Registerkarte auf, klicken Sie auf Neue Elemente und dann auf Aufgabe.

  3. Geben Sie im Aufgabenformular im Feld Betreff "Dependant Task" ein.

  4. Klicken Sie auf der Registerkarte Aufgabe des Menübands in der Gruppe Aktionen auf Speichern und schließen.

  5. In Outlook Startseite auf der Registerkarte auf, klicken Sie auf Neue Elemente, auf Weitere Elemente und klicken dann auf Formular auswählen.

  6. Klicken Sie im Dialogfeld Formular auswählen auf TaskFormRegion und anschließend auf Öffnen.

    Der Formularbereich TaskFormRegion wird angezeigt.Dieses Formular ersetzt das gesamte Aufgabenformular.Das Kombinationsfeld Aufgabe zum Hinzufügen zur Liste abhängiger Aufgaben auswählen wird mit anderen Aufgaben im Aufgabenordner aufgefüllt.

  7. Geben Sie im Aufgabenformular "Hauptaufgabe" in das Feld Betreff ein.

  8. Wählen Sie im Kombinationsfeld Aufgabe zum Hinzufügen zur Liste abhängiger Aufgaben auswählen die Option Abhängige Aufgabe aus, und klicken Sie anschließend auf Abhängige Aufgabe hinzufügen.

    0 % abgeschlossen – Abhängige Aufgabe wird im Listenfeld Diese Aufgabe ist von folgenden Aufgaben abhängig angezeigt.Dies bedeutet, dass das Microsoft.Office.Interop.Outlook.OlkCommandButton.Click-Ereignis der Schaltfläche erfolgreich behandelt wurde.

  9. Speichern und schließen Sie das Element Hauptaufgabe.

  10. Öffnen Sie in Outlook erneut das Element "Abhängige Aufgabe".

  11. Ändern Sie im Formular "Abhängige Aufgabe" den Wert im Feld % abgeschlossen in 50 %.

  12. Klicken Sie auf der Registerkarte Aufgabe auf dem Menüband für "Abhängige Aufgabe" in der Gruppe Aktionen auf Speichern und schließen.

  13. Öffnen Sie in Outlook erneut das Element Hauptaufgabe.

    50 % abgeschlossen – Abhängige Aufgabe wird nun im Listenfeld Diese Aufgabe ist von folgenden Aufgaben abhängig angezeigt.

Nächste Schritte

Weitere Informationen zum Anpassen der Benutzeroberfläche einer Outlook-Anwendung finden Sie in diesen Themen:

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Entwerfen eines Outlook-Formularbereichs

Gewusst wie: Hinzufügen eines Bereichs zu einem Outlook-Add-In-Projekt

Gewusst wie: Verhindern der Anzeige eines Formularbereichs in Outlook

Konzepte

Zugreifen auf einen Formularbereich zur Laufzeit

Richtlinien zum Erstellen von Outlook-Formularbereichen

Zuordnen eines Formularbereichs zu einer Outlook-Nachrichtenklasse

Benutzerdefinierte Aktionen in Outlook-Formularbereichen

Weitere Ressourcen

Erstellen von Outlook-Formularbereichen