Exemplarische Vorgehensweise: Importieren eines in Outlook entworfenen Formularbereichs

Aktualisiert: November 2007

Betrifft

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

Projekttyp

  • Projekte auf Anwendungsebene

Microsoft Office-Version

  • Outlook 2007

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

Diese exemplarische Vorgehensweise zeigt, wie in Microsoft Office Outlook ein Formularbereich entworfen und dieser anschließend mithilfe des Neuer Formularbereich-Assistenten in ein Visual Studio Tools for Office-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.

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

Hinweis:

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:

  • Visual Studio Tools for Office (eine optionale Komponente von Visual Studio 2008 Professional und Visual Studio Team System).

  • Microsoft Office Outlook 2007.

Hinweis:

Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio, die in den folgenden Anweisungen aufgeführt sind, angezeigt. Die von Ihnen verwendete Visual Studio-Edition und die Einstellungen legen diese Elemente fest. Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

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 2007.

  2. Zeigen Sie im Menü Extras auf Formulare, und klicken Sie dann auf Ein Formular entwerfen.

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

  4. Klicken Sie auf der Registerkarte Entwickler in der Gruppe Entwurf auf Formularbereich und dann 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 Eigenschaft Beschriftung auf This task depends on the following tasks und die Eigenschaft Breite 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 Eigenschaft Breite 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 Eigenschaft Beschriftung auf Select a task to add to the list of dependent tasks und die Eigenschaft Breite 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 Eigenschaft Breite 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 Eigenschaft Name auf AddDependentTask, Beschriftung auf Add Dependent Task und Breite auf 100 fest. Klicken Sie anschließend auf Übernehmen.

  22. Klicken Sie in Feldauswahl auf Neu.

  23. Geben Sie im Dialogfeld Neues Feld in das Feld NamehiddenField ein, und klicken Sie anschließend auf OK.

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

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

  26. Klicken Sie auf der Registerkarte Entwickler in der Gruppe Entwurf auf Formularbereich 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 2007-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 hierzu finden Sie unter Gewusst wie: Erstellen von Visual Studio Tools for Office-Projekte.

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 vorhandeneOutlook-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. Durch diesen 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. Durch diesen 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. Durch diesen 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. Zeigen Sie in Outlook im Menü Datei auf Neu, und klicken Sie dann auf Aufgabe.

  3. Geben Sie im Aufgabenformular im Feld BetreffDependent Task ein.

  4. Klicken Sie auf der Registerkarte Aufgabe der Multifunktionsleiste in der Gruppe Aktionen auf Speichern und schließen.

  5. Zeigen Sie in Outlook im Menü Datei auf Neu, und klicken Sie 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 Select a task to add to the list of dependent tasks wird mit anderen Aufgaben im Aufgabenordner ausgefüllt.

  7. Geben Sie im Aufgabenformular im Feld Betreff Folgendes ein: Primary Task.

  8. Wählen Sie im Kombinationsfeld Select a task to add to the list of dependent tasks die Option Dependent Task aus, und klicken Sie anschließend auf Add Dependent Task.

    0% erledigt – Dependent Task wird im Listenfeld This task depends on the following tasks 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 Primary Task.

  10. Öffnen Sie in Outlook erneut das Element für abhängige Aufgaben.

  11. Ändern Sie im Formular für abhängige Aufgaben den Wert im Feld % erledigt auf 50%.

  12. Klicken Sie auf der Registerkarte Aufgabe der Multifunktionsleiste für abhängige Aufgaben in der Gruppe Aktionen auf Speichern und schließen.

  13. Öffnen Sie in Outlook erneut das Element Primary Task.

    50% erledigt – Dependent Task wird nun im Listenfeld This task depends on the following tasks 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

Gewusst wie: Zugreifen auf das Outlook-Element, das den Formularbereich anzeigt.

Konzepte

Zugreifen auf einen Formularbereich zur Laufzeit

Erstellen von Outlook-Formularbereichen

Richtlinien zum Erstellen von Outlook-Formularbereichen

Zuordnen eines Formularbereichs zu einer Outlook-Nachrichtenklasse

Benutzerdefinierte Aktionen in Outlook-Formularbereichen