Öffnen und Anzeigen des Inhalts einer iCalendar-Datei
In diesem Beispiel wird gezeigt, wie Inhalte einer iCalendar-Datei geöffnet und angezeigt werden, abhängig davon, ob die Datei einen einzelnen Termin, eine Terminserie oder eine Gruppe von Terminen enthält.
Beispiel
In diesem Codebeispiel wird zuerst versucht, die OpenSharedItem -Methode des NameSpace -Objekts zu verwenden, um die iCalendar-Datei als iCalendar-Datei mit einem einzelnen Termin zu öffnen. Ist dieser Versuch erfolgreich, werden die Einzelheiten des Termins in einem Inspektorfenster angezeigt. Das Element wird jedoch nicht in den Standardspeicher kopiert. Wenn die Datei durch das Codebeispiel nicht als iCalendar-Datei mit einem einzelnen Termin geöffnet werden kann, wird mithilfe der OpenSharedFolder -Methode des NameSpace-Objekts versucht, die Inhalte als neuen Kalender in den Standardspeicher zu importieren. Ist der Import erfolgt, wird der Kalender in einem Explorer-Fenster angezeigt.
In diesem Codebeispiel wird die OutlookItem-Hilfsklasse verwendet, die unter Erstellen einer Hilfsklasse zum Zugriff auf allgemeine Member von Outlook-Elementen definiert ist, um die OutlookItem.Display-Methode zum Anzeigen des Terminelements aufzurufen, ohne das Element zunächst umwandeln zu müssen.
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 Anweisung Imports oder using darf im Codebeispiel nicht direkt vor den Funktionen stehen, sondern muss vor der öffentlichen Class-Deklaration hinzugefügt werden. Die folgenden Codezeilen zeigen, wie Sie den Import und die Zuweisung in Visual Basic und C# vornehmen.
Imports Outlook = Microsoft.Office.Interop.Outlook
using Outlook = Microsoft.Office.Interop.Outlook;
Private Sub OpenICalendarFile(ByVal fileName As String)
If String.IsNullOrEmpty(fileName) Then
Throw New ArgumentException(_
"Parameter must contain a value.", "exportFileName")
End If
If Not File.Exists(fileName) Then
Throw New FileNotFoundException(fileName)
End If
'' First try to open the icalendar file as an appointment
'' (not a calendar folder).
Dim item As Object = Nothing
Try
item = Application.Session.OpenSharedItem(fileName)
Catch
End Try
If Not item Is Nothing Then
'' Display the item
Dim olItem As OutlookItem = New OutlookItem(item)
olItem.Display()
Return
End If
'' If unsucessful in opening it as an item,
'' try opening it as a folder
Dim importedFolder As Outlook.Folder = Nothing
Try
importedFolder = TryCast( _
Application.Session.OpenSharedFolder(fileName), _
Outlook.Folder)
Catch
End Try
'' If sucessful, open the folder in a new explorer window
If Not importedFolder Is Nothing Then
Dim explorer As Outlook.Explorer = _
Application.Explorers.Add( _
importedFolder, _
Outlook.OlFolderDisplayMode.olFolderDisplayNormal)
explorer.Display()
End If
End Sub
private void OpenICalendarFile(string fileName)
{
if (string.IsNullOrEmpty(fileName))
throw new ArgumentException("exportFileName",
"Parameter must contain a value.");
if (!File.Exists(fileName))
throw new FileNotFoundException(fileName);
// First try to open the icalendar file as an appointment
// (not a calendar folder).
object item = null;
try
{
item = Application.Session.OpenSharedItem(fileName);
}
catch
{ }
if (item != null)
{
// Display the item
OutlookItem olItem = new OutlookItem(item);
olItem.Display();
return;
}
// If unsucessful in opening it as an item,
// try opening it as a folder
Outlook.Folder importedFolder = null;
try
{
importedFolder = Application.Session.OpenSharedFolder(
fileName, Type.Missing, Type.Missing, Type.Missing)
as Outlook.Folder;
}
catch
{ }
// If sucessful, open the folder in a new explorer window
if (importedFolder != null)
{
Outlook.Explorer explorer =
Application.Explorers.Add(importedFolder,
Outlook.OlFolderDisplayMode.olFolderDisplayNormal);
explorer.Display();
}
}