Mostrar el cuadro de diálogo Seleccionar nombres para resolver los destinatarios
En este ejemplo se intentan resolver los destinatarios proporcionados por el parámetro recips y se muestra el cuadro de diálogo Seleccionar nombres de Outlook para cada destinatario que sea ambiguo y no se pueda resolver.
Ejemplo
Este ejemplo de código llama al objeto SelectNamesDialog para mostrar el cuadro de diálogo Seleccionar nombres que muestra la libreta de direcciones de Outlook. Mediante este cuadro de diálogo, el usuario puede seleccionar un nombre de la libreta de direcciones. Si no se resuelve el nombre el destinatario, se quitará de los destinatarios. Si se resuelve el nombre, el código de ejemplo devolverá el objeto AddressEntry del destinatario para los destinatarios.
Si usa Visual Studio para probar este ejemplo de código, primero debe agregar una referencia al componente de la biblioteca de objetos de Microsoft Outlook 15.0 y especificar la variable de Outlook al importar el espacio de nombres Microsoft.Office.Interop.Outlook. La instrucción Imports o using no deben producirse directamente antes de las funciones en el ejemplo de código, pero deben agregarse antes de la declaración de clase pública. Las líneas siguientes de código muestran cómo realizar la importación y la asignación en Visual Basic y 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;
}
}
}
}