Anzeigen des Dialogfelds „Namen auswählen“ zum Auflösen von Empfängern
In diesem Beispiel wird versucht, die im recips-Parameter angegebenen Empfänger aufzulösen. Für jeden mehrdeutigen Empfänger, der nicht aufgelöst werden kann, wird das Outlook-Dialogfeld Namen auswählen angezeigt.
Beispiel
In dem Codebeispiel wird das SelectNamesDialog -Objekt aufgerufen, um das Dialogfeld Namen auswählen anzuzeigen, das das Outlook-Adressbuch enthält. In diesem Dialogfeld kann der Benutzer einen Namen aus dem Adressbuch auswählen. Wird der Name nicht aufgelöst, wird der Empfänger aus recips entfernt. Wird der Name aufgelöst, wird das AddressEntry-Objekt des Empfängers an recips zurückgegeben.
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 ResolveRecipients(ByVal recips As Outlook.Recipients)
If recips Is Nothing Then
Throw New ArgumentNullException()
End If
If recips.ResolveAll() Then
Return
Else
For i As Integer = recips.Count To 1 Step -1
If Not (recips(i).Resolve()) Then
Dim snd As Outlook.SelectNamesDialog = _
Application.Session.GetSelectNamesDialog()
snd.Recipients.Add(recips(i).Name)
snd.NumberOfRecipientSelectors = _
Outlook.OlRecipientSelectors.olShowTo
snd.AllowMultipleSelection = False
snd.Display()
If Not (snd.Recipients.ResolveAll()) Then
recips.Remove(i)
Else
recips.Remove(i)
recips.Add(snd.Recipients(1).Address)
End If
snd = Nothing
End If
Next
End If
End Sub
private void ResolveRecipients(Outlook.Recipients recips)
{
if (recips == null)
{
throw new ArgumentNullException();
}
if (recips.ResolveAll())
{
return;
}
else
{
for (int i = recips.Count; i > 0; i--)
{
if (!recips[i].Resolve())
{
Outlook.SelectNamesDialog snd =
Application.Session.
GetSelectNamesDialog();
snd.Recipients.Add(recips[i].Name);
snd.NumberOfRecipientSelectors =
Outlook.OlRecipientSelectors.olShowTo;
snd.AllowMultipleSelection = false;
snd.Display();
if (!snd.Recipients.ResolveAll())
{
recips.Remove(i);
}
else
{
recips.Remove(i);
recips.Add(snd.Recipients[1].Address);
}
snd = null;
}
}
}
}