2011-01-04 18 views
5

Come aprire il contatto utilizzando C# VSTO Outlook 2007 addin by EntryID.C# VSTO Outlook 2007: Come mostrare il contatto con EntryID

Ora sono foreaching tutti i contatti nella cartella dei contatti:

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; 
    } 
} 

, ma questo non è il codice efficace per molti contatti in contatto cartella

risposta

3

Si desidera utilizzare il metodo dell'oggetto NameSpace GetItemFromID (unintuitively , è possibile accedere a questa proprietà tramite la proprietà Application.Session come sopra.)

È necessario l'ID del negozio MAPI dal quale si desidera recuperare l'elemento. Questo può essere più facilmente recuperato dall'oggetto Cartella a cui hai già avuto un riferimento.

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

SI! Funziona :-) Grazie – DjCzermino

+0

Felice di ascoltare. Se hai trovato la risposta utile, votala e contrassegnala come risposta in modo che la domanda non rimanga aperta. – Josh

2

codice finale:

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