2011-01-04 41 views
5

Cómo abrir Contacto usando C# VSTO Outlook 2007 addin por EntryID.C# VSTO Outlook 2007: Cómo mostrar el contacto por EntryID

Ahora estoy foreaching todos los contactos en la carpeta de contactos:

string entryid = ... 

Outlook.Application outlookApp = new Outlook.Application(); 
Outlook.MAPIFolder fldContacts = outlookApp.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts) as Outlook.MAPIFolder; 
foreach (Outlook._ContactItem contact in fldContacts.Items) 
{ 
    if (contact.EntryID==entryid) { 
     contact.Display(false); 
     break; 
    } 
} 

pero esto no es de código eficaz para muchos contactos en la carpeta de contactos

Respuesta

3

Usted desea utilizar el método del objeto NameSpace GetItemFromID (unintuitively , se puede acceder a través de la propiedad Application.Session como lo hace arriba).

Necesitará la Id. de tienda de la tienda MAPI desde la que desea recuperar el artículo. Esto se puede recuperar más fácilmente desde el objeto Folder, al que ya has hecho referencia.

string entryid = ... 

var outlookApp = new Outlook.Application(); 
var outlookNS = outlookApp.Session; 
var fldContacts = outlookNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts); 
var contact = outlookNS.GetItemFromID(entryid, fldContacts.StoreID); 
+0

SÍ! Está funcionando :-) Gracias – DjCzermino

+0

Me alegra escuchar. Si la respuesta le resultó útil, vótela y márquela como respondida para que la pregunta no permanezca abierta. – Josh

2

código final:

var outlookNS = this.Application.Session; 
var fldContacts = outlookNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts); 
ContactItem contact = (ContactItem)outlookNS.GetItemFromID(entryid, fldContacts.StoreID); 
contact.Display(false); 
Cuestiones relacionadas