2015-09-16 2 views
0

Je développe un plugin pour perspectives avec VSTO et je suis en train de mettre une région sous forme séparée pour montrer que la page forme actuelle dans l'inspecteur ouvert, mais lancer une exception. voici le codeC# Perspectives Addin setCurrentFormPage lancer exception

private void ThisAddIn_Startup(object sender, System.EventArgs e) 
    { 
     this.Application.Inspectors.NewInspector += InspectorsOnNewInspector; 
     this.Application.Explorers.NewExplorer += Explorers_NewExplorer; 
    } 

    private void Explorers_NewExplorer(Outlook.Explorer explorer) 
    { 

    } 

    private void InspectorsOnNewInspector(Outlook.Inspector inspector) 
    { 
     MessageBox.Show("ola"); 
     // exception ocurrs in this line 
     inspector.SetCurrentFormPage("OutlookAddIn.RequestFormRegion"); 

    } 

    private void ThisAddIn_Shutdown(object sender, System.EventArgs e) 
    { 
    } 

Merci d'avance.

Répondre

0

j'ai réussi à le mettre à travailler avec le code suivant

private void InspectorsOnNewInspector(Outlook.Inspector inspector) 
    { 

     MessageBox.Show("ola"); 

     if (!(inspector.CurrentItem is Outlook.TaskItem)) return; 

     var taskItem = (Outlook.TaskItem) inspector.CurrentItem; 

     taskItem.Open += (ref bool cancel) => 
     { 
      try 
      { 
       inspector.SetCurrentFormPage("OutlookAddIn.RequestFormRegion"); 

      } 
      catch (Exception ex) 
      { 
       System.Windows.Forms.MessageBox.Show(ex.Message); 
      } 
     }; 
    } 
+0

Vous pouvez faire TaskItem une variable globale/classe - sinon l'événement Open ne se déclenche pas si le avriable reçoit les déchets collectés entre le NewInspector et événements ouverts. –