Share via


Erstellen eines Ausnahmetermins in einer Terminserie

In diesem Beispiel wird mithilfe eines Exception-Objekts eine Ausnahme zu einem Standardserienmuster für einen Termin erstellt.

Beispiel

Hinweis

Das folgende Codebeispiel ist ein Auszug aus Programming Applications für Microsoft Office Outlook 2007.

Nachdem Sie eine Termininstanz einer Terminserie gelöscht oder geändert haben, erstellt Outlook ein Exception-Objekt. Mithilfe dem Exception-Objekt können Sie eine Ausnahme zu einem Standardserienmuster erstellen. Die Eigenschaften des Objekts enthalten die Änderungen, die an der Termininstanz vorgenommen wurden. Die Exceptions-Auflistung enthält alle Exception-Objekte für eine Terminserie und ist mit dem RecurrencePattern-Objekt des Termins verknüpft.

Um das AppointmentItem-Objekt abzurufen, das die Ausnahme zu dem ursprünglichen Serienmuster der Terminserie darstellt, verwenden Sie die AppointmentItem-Eigenschaft von Exception. Mit den Methoden und Eigenschaften des zurückgegebenen AppointmentItem können Sie die Eigenschaften der Terminausnahme festlegen.

Wenn Sie mit Terminserien arbeiten, müssen Sie vorherige Verweise freigeben, neue Verweise auf das Terminserienelement abrufen, bevor Sie das Element öffnen oder bearbeiten, und diese Verweise freigeben, sobald Sie Ihre Änderungen abgeschlossen und gespeichert haben. Diese Vorgehensweise gilt für das sich wiederholende AppointmentItem-Objekt und alle Exception- oder RecurrencePattern-Objekte. Um einen Verweis in Visual Basic freizugeben, legen Sie dieses vorhandene Objekt auf „Nothing“ fest. Geben Sie in C# den Arbeitsspeicher für dieses Objekt explizit frei.

Beachten Sie, dass selbst, nachdem Sie Ihre Referenz freigegeben haben und versuchen eine neue Referenz abzurufen, Ihre neue Referenz weiterhin auf eine veraltete Kopie des Objekts zeigt, wenn weiterhin eine aktive Referenz zu einem der obigen Objekte vorliegt, die von einem anderen Add-In oder von Outlook verwendet wird. Deshalb ist es wichtig, dass Sie die Verweise freigeben, sobald Sie die Bearbeitung der Terminserie abgeschlossen haben.

Im folgenden Codebeispiel ändert CreateExceptionExample den Betreff der im Thema Suchen nach einem bestimmten Termin in einer Terminserie erstellten Terminserie. Anschließend wird mit der AppointmentItem-Eigenschaft des resultierenden Exception-Objekts das AppointmentItem-Objekt abgerufen, das der Terminausnahme entspricht. CreateExceptionExample ändert dann die Start- und Endzeit der Terminausnahme.

Wenn Sie Visual Studio verwenden, um dieses Codebeispiel zu testen, müssen Sie der Microsoft Outlook 15.0-Objektbibliothekkomponente zuerst einen Verweis hinzufügen und die Outlook-Variable angeben, wenn Sie den Microsoft.Office.Interop.Outlook-Namespace importieren. Die using-Anweisung darf im Codebeispiel nicht direkt vor den Funktionen stehen, sondern muss vor der öffentlichen Class-Deklaration hinzugefügt werden. Die folgende Codezeile zeigt, wie Sie den Import und die Zuweisung in C# vornehmen.

using Outlook = Microsoft.Office.Interop.Outlook;
private void CreateExceptionExample()
{
    Outlook.AppointmentItem appt = Application.Session.
        GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar).
        Items.Find(
        "[Subject]='Recurring Appointment DaysOfWeekMask Example'")
        as Outlook.AppointmentItem;
    if (appt != null)
    {
        try
        {
            Outlook.RecurrencePattern pattern =
                appt.GetRecurrencePattern();
            Outlook.AppointmentItem myInstance =
                pattern.GetOccurrence(DateTime.Parse(
                "7/21/2006 2:00 PM"))
                as Outlook.AppointmentItem;
            if (myInstance != null)
            {
                myInstance.Subject = "My Exception";
                myInstance.Save();
                Outlook.RecurrencePattern newPattern =
                    appt.GetRecurrencePattern();
                Outlook.Exception myException =
                    newPattern.Exceptions[1];
                if (myException != null)
                {
                    Outlook.AppointmentItem myNewInstance =
                        myException.AppointmentItem;
                    myNewInstance.Start =
                        DateTime.Parse("7/21/2006 1:00 PM");
                    myNewInstance.End =
                        DateTime.Parse("7/21/2006 2:00 PM");
                    myNewInstance.Save();
                }
            }
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex.Message);
        }
    }
}

Siehe auch