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 2007 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
Tipp
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 2010, die die Microsoft Office-Entwicklungstools einschließt. Weitere Informationen finden Sie unter [Konfigurieren eines Computers zum Entwickeln von Office-Lösungen](bb398242\(v=vs.100\).md).
- Microsoft Office Outlook 2007 oder Outlook 2010.
Tipp
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 Arbeiten mit Einstellungen.
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
Starten Sie Microsoft Office Outlook.
Öffnen Sie den Formular-Designer, indem Sie eine der folgenden Aufgaben ausführen:
Klicken Sie in Outlook 2010 auf der Registerkarte Entwickler auf Ein Formular entwerfen. Weitere Informationen finden Sie unter Gewusst wie: Anzeigen der Registerkarte "Entwickler" auf der Multifunktionsleiste.
Zeigen Sie in Outlook 2007 im Menü Extras auf Formulare, und klicken Sie dann auf Ein Formular entwerfen.
Klicken Sie im Feld Formular entwerfen auf Aufgabe und anschließend auf Öffnen.
Erstellen Sie einen Formularbereich, indem Sie eine der folgenden Aufgaben ausführen:
Klicken Sie in Outlook 2010 auf der Registerkarte Entwickler in der Gruppe Entwurf auf Neuer Formularbereich.
Klicken Sie in Outlook 2007 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.
Ziehen Sie das Feld Betreff und das Feld % erledigt von Feldauswahl zum Formularbereich.
Klicken Sie in der Gruppe Extras auf Steuerelement-Toolbox, um die Toolbox zu öffnen.
Ziehen Sie eine Bezeichnung von der Toolbox zum Formularbereich. Ordnen Sie die Bezeichnung unter den Feldern Betreff und % erledigt an.
Klicken Sie mit der rechten Maustaste auf die Bezeichnung, und klicken Sie anschließend auf Erweiterte Eigenschaften.
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".
Ziehen Sie ein ListBox-Steuerelement von der Toolbox zum Formularbereich. Ordnen Sie das Listenfeld unter This task depends on the following tasks an.
Wählen Sie das soeben hinzugefügte Listenfeld aus.
Legen Sie im Fenster Eigenschaften die Width-Eigenschaft auf 300 fest, und klicken Sie anschließend auf Übernehmen.
Ziehen Sie eine Bezeichnung von der Toolbox zum Formularbereich. Ordnen Sie die Bezeichnung unter dem Listenfeld an.
Wählen Sie die soeben hinzugefügte Bezeichnung aus.
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".
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.
Wählen Sie das soeben hinzugefügte Kombinationsfeld aus.
Legen Sie im Fenster Eigenschaften die Width-Eigenschaft auf 300 fest, und klicken Sie anschließend auf Übernehmen.
Ziehen Sie ein CommandButton-Steuerelement aus der Toolbox in den Formularbereich. Ordnen Sie die Befehlsschaltfläche neben dem Kombinationsfeld an.
Wählen Sie die soeben hinzugefügte Befehlsschaltfläche aus.
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.
Klicken Sie in Feldauswahl auf Neu.
Geben Sie im Dialogfeld Neues Feld im Feld Name die Zeichenfolge "hiddenField" ein, und klicken Sie dann auf OK.
Ziehen Sie das Feld hiddenField vom Dialogfeld Feldauswahl zum Formularbereich.
Legen Sie im Fenster Eigenschaften die Visible-Eigenschaft auf "0 - False" fest, und klicken Sie anschließend auf Übernehmen.
Speichern Sie den Formularbereich, indem Sie eine der folgenden Aufgaben ausführen:
Klicken Sie in Outlook 2010 auf der Registerkarte Entwickler in der Gruppe Entwurf auf die Schaltfläche Speichern, und klicken Sie dann auf Formularbereich speichern unter.
Klicken Sie in Outlook 2007 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.
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
Erstellen Sie in Visual Studio ein Outlook-Add-In-Projekt mit der Bezeichnung "TaskAddIn".
Wählen Sie im Dialogfeld Neues Projekt die Option Projektmappenverzeichnis erstellen.
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
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.
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 Neuer Outlook-Formularbereich wird gestartet.
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.
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.
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.
Klicken Sie auf der Seite Geben Sie eine Beschreibung ein, und wählen Sie die Anzeigeeinstellungen aus auf Weiter.
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
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.
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); }
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; } }
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; }
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); } } }
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
Drücken Sie F5, um das Projekt auszuführen.
Outlook wird gestartet.
Erstellen Sie in Outlook eine Aufgabe, indem Sie eine der folgenden Aufgaben ausführen:
Klicken Sie in Outlook 2010 auf der Registerkarte Start auf Neue Elemente und dann auf Aufgabe.
Zeigen Sie in Outlook 2007 im Menü Datei auf Neu, und klicken Sie dann auf Aufgabe.
Geben Sie im Aufgabenformular im Feld Betreff "Dependant Task" ein.
Klicken Sie auf der Registerkarte Aufgabe des Menübands in der Gruppe Aktionen auf Speichern und schließen.
Erstellen Sie in Outlook eine Instanz des Formularbereichs, indem Sie eine der folgenden Aufgaben ausführen:
Klicken Sie in Outlook 2010 auf der Registerkarte Start auf Neue Elemente, Weitere Elemente und anschließend auf Formular auswählen.
Zeigen Sie in Outlook 2007 im Menü Datei auf Neu, und klicken Sie dann auf Formular auswählen.
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.
Geben Sie im Aufgabenformular "Hauptaufgabe" in das Feld Betreff ein.
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.
Speichern und schließen Sie das Element Hauptaufgabe.
Öffnen Sie in Outlook erneut das Element "Abhängige Aufgabe".
Ändern Sie im Formular "Abhängige Aufgabe" den Wert im Feld % abgeschlossen in 50 %.
Klicken Sie auf der Registerkarte Aufgabe auf dem Menüband für "Abhängige Aufgabe" in der Gruppe Aktionen auf Speichern und schließen.
Ö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:
Weitere Informationen zum Entwerfen der Darstellung eines Formularbereichs durch Ziehen von verwalteten Steuerelementen auf einen visuellen Designer finden Sie unter Exemplarische Vorgehensweise: Entwerfen eines Outlook-Formularbereichs.
Informationen zum Anpassen des Menübands eines Outlook-Elements finden Sie unter Anpassen einer Multifunktionsleiste in Outlook.
Weitere Informationen zum Hinzufügen eines benutzerdefinierten Aufgabenbereichs zu Outlook finden Sie unter Übersicht über benutzerdefinierte Aufgabenbereiche.
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
Richtlinien zum Erstellen von Outlook-Formularbereichen
Zuordnen eines Formularbereichs zu einer Outlook-Nachrichtenklasse
Benutzerdefinierte Aktionen in Outlook-Formularbereichen