Отображение диалогового окна "Выбор имен" для сопоставления получателей
В этом примере предпринимается попытка разрешить получателей, предоставленных параметром recips, и выводится диалоговое окно Outlook Выбор имен для каждого неоднозначного получателя, которого не удалось разрешить.
Пример
Код этого примера вызывает объект SelectNamesDialog , чтобы отобразить диалоговое окно Выбор имен, показывающее адресную книгу Outlook. В этом диалоговом окне пользователь может выбрать имя адресной книги. Если имя не удается разрешить, получатель будет удален из recips. Если имя разрешается, то пример кода возвращает в recips объект AddressEntry получателя.
Если для тестирования этого примера кода вы используете Visual Studio, сначала добавьте ссылку на компонент библиотеки объектов Microsoft Outlook 15.0 и укажите переменную Outlook при импорте пространства имен Microsoft.Office.Interop.Outlook. Инструкция Imports или using не должна идти непосредственно перед функциями в примере кода, но ее нужно добавить перед объявлением общедоступного класса. В следующих строках кода показано, как выполнить импорт и назначение в Visual Basic и C#.
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;
}
}
}
}