2011-01-04 12 views
5

So öffnen Sie Kontakt mit C# VSTO Outlook 2007 Add-In von EntryID.C# VSTO Outlook 2007: So zeigen Sie Kontakt von EntryID

Jetzt bin foreaching ich alle Kontakte in Kontaktordner:

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

aber dies ist nicht wirksam Code für viele Kontakte in Kontaktordner

Antwort

3

Sie wollen die GetItemFromID Methode des Namens Objekt verwenden (unintuitively Sie können wie oben beschrieben über die Application.Session-Eigenschaft darauf zugreifen.)

Sie benötigen die Store-ID des MAPI-Speichers, von dem Sie den Artikel abrufen möchten. Dies kann am einfachsten aus dem Ordner-Objekt abgerufen werden, auf das Sie bereits einen Bezug haben.

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

YES! Seine Arbeit :-) Danke – DjCzermino

+0

Freut mich zu hören. Wenn Sie die Antwort hilfreich fanden, stimmen Sie bitte ab und markieren Sie sie als beantwortet, damit die Frage nicht offen bleibt. – Josh

2

endgültiger Code:

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