2017-07-26 3 views
1

Je veux changer le corps d'un mailitem lorsque l'utilisateur clique dessus (sans obtenir les modifications enregistrées!) Avant qu'il ne soit affiché dans l'aperçu. Je pensais que le contrôle de prévisualisation s'appelait l'Explorateur et que je m'abonnais à l'événement NewExplorer mais qu'il ne se déclenche pas lorsque je clique sur des messages.Catch courrier aperçu de l'élément ouvrir l'événement

Microsoft.Office.Interop.Outlook.Explorers explorers = Application.Explorers; 
explorers.NewExplorer += new Microsoft.Office.Interop.Outlook.ExplorersEvents_NewExplorerEventHandler(Open_NewExplorer); 

Répondre

0

Vous aurez besoin d'utiliser l'événement SelectionChange sur l'objet Explorer actif en cours, en appelant la méthode ActiveExplorer.

Dans le gestionnaire d'événements Application.Startup, vous devez ajouter le gestionnaire pour l'événement; votre code peut ressembler à ...

this.Application.ActiveExplorer().SelectionChange += new Outlook.ExplorerEvents_10_SelectionChangeEventHandler(Explorer_SelectionChange); 

À l'intérieur du manipulateur travailler avec Selection; votre code peut ressembler à ...

void Explorer_SelectionChange() 
{ 
    if (this.Application.ActiveExplorer().Selection.Count == 1) 
    { 
     Outlook.MailItem item = this.Application.ActiveExplorer().Selection[1] as Outlook.MailItem; 

     if (item != null) 
     { 
      //do something 
     } 
    } 
} 
+0

Je l'avais fait exactement mais pour une raison quelconque l'événement ne se déclenche pas quand je clique des messages. J'ai un point d'arrêt à l'intérieur de mon 'CurrentExplorer_SelectionChangedHandler()' mais l'exécution ne rentre jamais dedans. Y at-il quelque chose qui peut empêcher cet événement de tirer? L'explorateur actif peut-il changer d'une manière ou d'une autre? – Val

+0

Comme vous le savez, le démarrage de l'application se produit une fois et vous devez joindre l'événement là-bas. Vous devez également stocker l'objet dans une variable, sinon la récupération de place sur cet objet démarrera avant que vous n'obteniez l'événement. Pour mieux le comprendre, voir l'exemple complet sur [Comment: déterminer par programme l'élément Outlook actuel] (https://msdn.microsoft.com/en-us/library/ms268994.aspx) –