2011-01-04 6 views
5

Comment ouvrir contacter en utilisant C# VSTO Outlook 2007 Addin par EntryID.C# VSTO Outlook 2007: Comment afficher un contact par EntryID

Maintenant, je foreaching tous les contacts dans le dossier Contact:

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

mais ce n'est pas un code efficace pour de nombreux contacts dans le dossier Contact

Répondre

3

Vous souhaitez utiliser la méthode GetItemFromID de l'objet NameSpace (unintuitively , cela peut être accessible via la propriété Application.Session que vous faites ci-dessus.)

vous aurez besoin du numéro de magasin du magasin MAPI à partir duquel vous souhaitez récupérer l'élément. Cela peut être facilement récupéré à partir de l'objet Folder auquel vous avez déjà fait référence.

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

OUI! Son fonctionnement :-) Thanx – DjCzermino

+0

Content de l'entendre. Si vous avez trouvé la réponse utile, veuillez voter pour la réponse et la question ne reste pas ouverte. – Josh

2

code final:

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