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
Microsoft Office-Version
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
Starten Sie Microsoft Office Outlook 2007.
Zeigen Sie 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.
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.
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 Eigenschaft Beschriftung auf This task depends on the following tasks und die Eigenschaft Breite 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 Eigenschaft Breite 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 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.
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 Eigenschaft Breite 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 Eigenschaft Name auf AddDependentTask, Beschriftung auf Add Dependent Task und Breite auf 100 fest. Klicken Sie anschließend auf Übernehmen.
Klicken Sie in Feldauswahl auf Neu.
Geben Sie im Dialogfeld Neues Feld in das Feld NamehiddenField ein, und klicken Sie anschließend auf OK.
Ziehen Sie das Feld hiddenField vom Dialogfeld Feldauswahl zum Formularbereich.
Legen Sie im Fenster Eigenschaften die Eigenschaft Visible auf 0 - False fest, und klicken Sie anschließend auf Übernehmen.
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.
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 2007-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 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
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 NeuerOutlook-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 vorhandeneOutlook-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. 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; } }
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. 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); } } }
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
Drücken Sie F5, um das Projekt auszuführen.
Outlook wird gestartet.
Zeigen Sie in Outlook im Menü Datei auf Neu, und klicken Sie dann auf Aufgabe.
Geben Sie im Aufgabenformular im Feld BetreffDependent Task ein.
Klicken Sie auf der Registerkarte Aufgabe der Multifunktionsleiste in der Gruppe Aktionen auf Speichern und schließen.
Zeigen Sie in Outlook 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 Select a task to add to the list of dependent tasks wird mit anderen Aufgaben im Aufgabenordner ausgefüllt.
Geben Sie im Aufgabenformular im Feld Betreff Folgendes ein: Primary Task.
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.
Speichern und schließen Sie das Element Primary Task.
Öffnen Sie in Outlook erneut das Element für abhängige Aufgaben.
Ändern Sie im Formular für abhängige Aufgaben den Wert im Feld % erledigt auf 50%.
Klicken Sie auf der Registerkarte Aufgabe der Multifunktionsleiste für abhängige Aufgaben in der Gruppe Aktionen auf Speichern und schließen.
Ö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:
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 der Multifunktionsleiste 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
Erstellen von Outlook-Formularbereichen
Richtlinien zum Erstellen von Outlook-Formularbereichen
Zuordnen eines Formularbereichs zu einer Outlook-Nachrichtenklasse