Procédure pas à pas : afficher des volets office personnalisés avec des messages électroniques dans Outlook

Cette procédure pas à pas montre comment afficher une instance unique d’un volet Office personnalisé avec chaque message électronique créé ou ouvert. Les utilisateurs peuvent afficher ou masquer le volet des tâches personnalisé à l’aide d’un bouton situé sur le ruban de chaque message électronique.

S’applique à : les informations contenues dans cette rubrique s’appliquent aux projets de complément VSTO pour Outlook. Pour plus d’informations, consultez Fonctionnalités disponibles par application Office lication et le type de projet.

Pour afficher un volet des tâches personnalisé avec plusieurs fenêtres d’explorateur ou d’inspecteur, vous devez créer une instance du volet des tâches personnalisé pour chaque fenêtre ouverte. Pour plus d’informations sur le comportement des volets Office personnalisés dans les fenêtres Outlook, consultez volets Office personnalisés.

Remarque

Cette procédure pas à pas présente le code du complément VSTO en petites sections afin de simplifier la présentation de la logique que suit le code.

Cette procédure pas à pas décrit les tâches suivantes :

  • Conception de l’interface utilisateur du volet des tâches personnalisé.

  • Création d’une interface utilisateur du ruban personnalisée.

  • Affichage de l’interface utilisateur du ruban personnalisée avec des messages électroniques.

  • Création d’une classe pour gérer les fenêtres d’inspecteur et les volets des tâches personnalisés.

  • Initialisation et nettoyage des ressources utilisées par le complément VSTO.

  • Synchronisation du bouton bascule du ruban avec le volet des tâches personnalisé.

Remarque

Il est possible que pour certains des éléments de l'interface utilisateur de Visual Studio, votre ordinateur affiche des noms ou des emplacements différents de ceux indiqués dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d’informations, consultez Personnaliser l’IDE Visual Studio.

Prérequis

Vous devez disposer des éléments suivants pour exécuter cette procédure pas à pas :

Créer le projet

Les volets Office personnalisés sont implémentés dans les compléments VSTO. Commencez par créer un projet de complément VSTO pour Outlook.

Pour créer un projet

  1. Créez un projet de Complément Outlook portant le nom OutlookMailItemTaskPane. Utilisez le modèle de projet Complément Outlook . Pour plus d’informations, consultez Guide pratique pour créer des projets Bureau dans Visual Studio.

    Visual Studio ouvre le fichier de code ThisAddIn.cs ou ThisAddIn.vb et ajoute le projet OutlookMailItemTaskPane à Explorateur de solutions.

Concevoir l’interface utilisateur du volet Office personnalisé

Il n’existe pas de concepteur visuel pour les volets des tâches personnalisés, mais vous pouvez concevoir un contrôle utilisateur avec l’interface utilisateur de votre choix. Le volet des tâches personnalisé de ce complément VSTO offre une interface utilisateur simple qui contient un contrôle TextBox . À une étape ultérieure de cette procédure, vous ajouterez le contrôle utilisateur au volet des tâches personnalisé.

Pour concevoir l’interface utilisateur du volet Office personnalisé

  1. Dans l’ Explorateur de solutions, cliquez sur le projet OutlookMailItemTaskPane .

  2. Dans le menu Projet , cliquez sur Ajouter un contrôle utilisateur.

  3. Dans la boîte de dialogue Ajouter un nouvel élément , remplacez le nom du nouveau contrôle utilisateur par TaskPaneControl, puis cliquez sur Ajouter.

    Le contrôle utilisateur s'ouvre dans le concepteur.

  4. Sous l’onglet Contrôles communs de la boîte à outils, faites glisser un contrôle TextBox vers le contrôle utilisateur.

Concevoir l’interface utilisateur du ruban

L’un des objectifs de ce complément VSTO consiste à permettre aux utilisateurs de masquer ou d’afficher le volet Office personnalisé du ruban de chaque e-mail. Pour fournir l’interface utilisateur, créez une interface utilisateur du ruban personnalisée qui affiche un bouton bascule sur lequel les utilisateurs peuvent cliquer pour afficher ou masquer le volet des tâches personnalisé.

Pour créer une interface utilisateur du ruban personnalisée

  1. Dans le menu Projet , cliquez sur Ajouter un nouvel élément.

  2. Dans la boîte de dialogue Ajouter un nouvel élément , sélectionnez Ruban (Concepteur visuel).

  3. Remplacez le nom du nouveau ruban par ManageTaskPaneRibbon, puis cliquez sur Ajouter.

    Le fichier ManageTaskPaneRibbon.cs ou ManageTaskPaneRibbon.vb s’ouvre dans le Concepteur de ruban et affiche un onglet et un groupe par défaut.

  4. Dans le Concepteur de ruban, cliquez sur group1.

  5. Dans la fenêtre Propriétés , définissez la propriété Label sur la valeur Gestionnaire de volets des tâches.

  6. Sous l’onglet Contrôles de ruban Office de la boîte à outils, faites glisser un contrôle ToggleButton dans le groupe Gestionnaire de volets des tâches .

  7. Cliquez sur toggleButton1.

  8. Dans la fenêtre Propriétés , affectez à la propriété Label la valeur Afficher le Volet Office.

Afficher l’interface utilisateur du ruban personnalisée avec des messages électroniques

Le volet des tâches personnalisé créé dans cette procédure pas à pas est conçu pour ne s’afficher qu’avec les fenêtres d’inspecteur qui contiennent des messages électroniques. Par conséquent, définissez les propriétés afin d’afficher votre interface utilisateur du ruban personnalisée uniquement avec ces fenêtres.

Pour afficher l’interface utilisateur du ruban personnalisée avec des messages électroniques

  1. Dans le Concepteur de ruban, cliquez sur le ruban ManageTaskPaneRibbon .

  2. Dans la fenêtre Propriétés , cliquez sur la liste déroulante en regard de RibbonType, puis sélectionnez Microsoft.Outlook.Mail.Compose et Microsoft.Outlook.Mail.Read.

Créer une classe pour gérer les fenêtres d’inspecteur et les volets Office personnalisés

Il existe plusieurs cas dans lesquels le complément VSTO doit identifier le volet Office personnalisé associé à un e-mail spécifique. Il s’agit notamment des cas suivants :

  • Lorsque l’utilisateur ferme un e-mail. Dans ce cas, le complément VSTO doit supprimer le volet des tâches personnalisé correspondant afin de garantir que les ressources utilisées par le complément VSTO sont correctement nettoyées.

  • Lorsque l’utilisateur ferme le volet des tâches personnalisé. Dans ce cas, le complément VSTO doit mettre à jour l’état du bouton bascule sur le ruban du message électronique.

  • Lorsque l’utilisateur clique sur le bouton bascule sur le ruban. Dans ce cas, le complément VSTO doit masquer ou afficher le volet des tâches correspondant.

    Pour permettre au complément VSTO de suivre le volet Office personnalisé associé à chaque message électronique ouvert, créez une classe personnalisée qui encapsule les paires d’objets et CustomTaskPane les paires Inspector d’objets. Cette classe crée un objet de volet Office personnalisé pour chaque message électronique et supprime le volet Office personnalisé lorsque le message électronique correspondant est fermé.

Pour créer une classe pour gérer les fenêtres d’inspecteur et les volets Office personnalisés

  1. Dans l’ Explorateur de solutions, cliquez avec le bouton droit sur le fichier ThisAddIn.cs ou ThisAddIn.vb , puis cliquez sur Afficher le code.

  2. Ajoutez les instructions suivantes en haut du fichier.

    using Microsoft.Office.Tools;
    
  3. Ajoutez le code suivant au fichier ThisAddIn.cs ou ThisAddIn.vb , en dehors de la classe ThisAddIn (pour Visual C#, ajoutez ce code dans l’espace de noms OutlookMailItemTaskPane ). La classe InspectorWrapper gère une paire d’objets Inspector et CustomTaskPane . Vous effectuez la définition de cette classe dans les étapes suivantes.

    public class InspectorWrapper
    {
        private Outlook.Inspector inspector;
        private CustomTaskPane taskPane;
    
  4. Ajoutez le constructeur suivant après le code ajouté à l’étape précédente. Ce constructeur crée et initialise un nouveau volet de tâches personnalisé associé à l’objet Inspector qui est passé. En C#, le constructeur attache également des gestionnaires d’événements à l’événement Close de l’objet Inspector et à l’événement VisibleChanged de l’objet CustomTaskPane .

    public InspectorWrapper(Outlook.Inspector Inspector)
    {
        inspector = Inspector;
        ((Outlook.InspectorEvents_Event)inspector).Close +=
            new Outlook.InspectorEvents_CloseEventHandler(InspectorWrapper_Close);
        
        taskPane = Globals.ThisAddIn.CustomTaskPanes.Add(
            new TaskPaneControl(), "My task pane", inspector);
        taskPane.VisibleChanged += new EventHandler(TaskPane_VisibleChanged);
    }
    
  5. Ajoutez la méthode suivante après le code ajouté à l’étape précédente. Il s’agit d’un gestionnaire d’événements pour l’événement VisibleChanged de l’objet CustomTaskPane contenu dans la classe InspectorWrapper . Ce code met à jour l’état du bouton bascule chaque fois que l’utilisateur ouvre ou ferme le volet des tâches personnalisé.

    void TaskPane_VisibleChanged(object sender, EventArgs e)
    {
        Globals.Ribbons[inspector].ManageTaskPaneRibbon.toggleButton1.Checked = 
            taskPane.Visible;
    }
    
  6. Ajoutez la méthode suivante après le code ajouté à l’étape précédente. Cette méthode est un gestionnaire d’événements pour l’événement Close de l’objet Inspector qui contient le message électronique actuel. Le gestionnaire d’événements libère des ressources lorsque le message électronique est fermé. Il supprime également le volet des tâches personnalisé actuel de la collection CustomTaskPanes . Cela permet d’éviter plusieurs instances du volet Office personnalisé lorsque le message électronique suivant est ouvert.

    void InspectorWrapper_Close()
    {
        if (taskPane != null)
        {
            Globals.ThisAddIn.CustomTaskPanes.Remove(taskPane);
        }
    
        taskPane = null;
        Globals.ThisAddIn.InspectorWrappers.Remove(inspector);
        ((Outlook.InspectorEvents_Event)inspector).Close -=
            new Outlook.InspectorEvents_CloseEventHandler(InspectorWrapper_Close);
        inspector = null;
    }
    
  7. Ajoutez le code suivant après le code ajouté à l’étape précédente. À une étape ultérieure de cette procédure, vous appellerez cette propriété à partir d’une méthode dans l’interface utilisateur du ruban personnalisée pour afficher ou masquer le volet des tâches personnalisé.

        public CustomTaskPane CustomTaskPane
        {
            get
            {
                return taskPane;
            }
        }
    }
    

Initialiser et propre ressources utilisées par le complément

Ajoutez du code à la classe ThisAddIn pour initialiser le complément VSTO lorsqu’il est chargé et pour nettoyer les ressources utilisées par le complément VSTO lorsqu’il est déchargé. Vous initialisez le complément VSTO en configurant un gestionnaire d’événements pour l’événement NewInspector et en transmettant tous les messages électroniques existants à ce gestionnaire d’événements. Lorsque le complément VSTO est déchargé, détachez le gestionnaire d’événements et nettoyez les objets utilisés par le complément VSTO.

Pour initialiser et nettoyer les ressources utilisées par le complément VSTO

  1. Dans le fichier ThisAddIn.cs ou ThisAddIn.vb , localisez la définition de la classe ThisAddIn .

  2. Ajoutez les déclarations suivantes à la classe ThisAddIn :

    • Le champ inspectorWrappersValue contient tous les objets Inspector et InspectorWrapper gérés par le complément VSTO.

    • Le champ inspectors conserve une référence à la collection de fenêtres Inspecteur de l'instance Outlook actuelle. Cette référence empêche le garbage collector de libérer la mémoire qui contient le gestionnaire d’événements pour l’événement NewInspector , que vous allez déclarer à l’étape suivante.

      private Dictionary<Outlook.Inspector, InspectorWrapper> inspectorWrappersValue =
          new Dictionary<Outlook.Inspector, InspectorWrapper>();
      private Outlook.Inspectors inspectors;
      

  3. Remplacez la méthode ThisAddIn_Startup par le code suivant. Ce code attache un gestionnaire d’événements à l’événement NewInspector et passe chaque objet Inspector existant au gestionnaire d’événements. Si l’utilisateur charge le complément VSTO après l’exécution d’Outlook, le complément VSTO utilise ces informations pour créer des volets Office personnalisés pour tous les messages électroniques déjà ouverts.

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        inspectors = this.Application.Inspectors;
        inspectors.NewInspector +=
            new Outlook.InspectorsEvents_NewInspectorEventHandler(
            Inspectors_NewInspector);
    
        foreach (Outlook.Inspector inspector in inspectors)
        {
            Inspectors_NewInspector(inspector);
        }
    }
    
  4. Remplacez la méthode ThisAddIn_ShutDown par le code suivant. Ce code détache le gestionnaire d’événements NewInspector et nettoie les objets utilisés par le complément VSTO.

    private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
    {
        inspectors.NewInspector -=
            new Outlook.InspectorsEvents_NewInspectorEventHandler(
            Inspectors_NewInspector);
        inspectors = null;
        inspectorWrappersValue = null;
    }
    
  5. Ajoutez le gestionnaire d’événements NewInspector suivant à la classe ThisAddIn . Si une nouvelle Inspector contient un message électronique, la méthode crée une instance d’un nouvel InspectorWrapper objet pour gérer la relation entre le message électronique et le volet Office correspondant.

    void Inspectors_NewInspector(Outlook.Inspector Inspector)
    {
        if (Inspector.CurrentItem is Outlook.MailItem)
        {
            inspectorWrappersValue.Add(Inspector, new InspectorWrapper(Inspector));
        }
    }
    
  6. Ajoutez la propriété suivante à la classe ThisAddIn . Cette propriété expose le champ inspectorWrappersValue privé au code en dehors de la classe ThisAddIn .

    public Dictionary<Outlook.Inspector, InspectorWrapper> InspectorWrappers
    {
        get
        {
            return inspectorWrappersValue;
        }
    }
    

Point de contrôle

Générez votre projet pour vous assurer qu’il est compilé sans erreur.

Pour générer votre projet

  1. Dans l’ Explorateur de solutions, cliquez avec le bouton droit sur le projet OutlookMailItemTaskPane , puis cliquez sur Générer. Vérifiez que le projet se compile sans erreur.

Synchroniser le bouton bascule du ruban avec le volet Office personnalisé

Le bouton semble enfoncé lorsque le volet Office est visible, et il semble être désactivé lorsque le volet Office est masqué. Pour synchroniser l’état du bouton avec le volet des tâches personnalisé, modifiez le gestionnaire d’événements Click du bouton bascule.

Pour synchroniser le volet des tâches personnalisé avec le bouton bascule

  1. Dans le Concepteur de ruban, double-cliquez sur le bouton bascule Afficher le Volet Office .

    Visual Studio génère automatiquement un gestionnaire d’événements nommé toggleButton1_Click, qui gère l’événement Click du bouton bascule. Visual Studio ouvre également le fichier ManageTaskPaneRibbon.cs ou ManageTaskPaneRibbon.vb dans l’éditeur de code

  2. Ajoutez les instructions suivantes au début du fichier ManageTaskPaneRibbon.cs ou ManageTaskPaneRibbon.vb .

    using Outlook = Microsoft.Office.Interop.Outlook;
    using Microsoft.Office.Tools;
    
  3. Remplacez le gestionnaire d'événements toggleButton1_Click par le code suivant. Lorsque l’utilisateur clique sur le bouton bascule, cette méthode masque ou affiche le volet des tâches personnalisé associé à la fenêtre d’inspecteur actuelle.

    private void toggleButton1_Click(object sender, RibbonControlEventArgs e)
    {
        Outlook.Inspector inspector = (Outlook.Inspector)e.Control.Context;
        InspectorWrapper inspectorWrapper = Globals.ThisAddIn.InspectorWrappers[inspector];
        CustomTaskPane taskPane = inspectorWrapper.CustomTaskPane;
        if (taskPane != null)
        {
            taskPane.Visible = ((RibbonToggleButton)sender).Checked;
        }
    }
    

Tester le projet

Lorsque vous commencez à déboguer le projet, Outlook s’ouvre et le complément VSTO est chargé. Le complément VSTO affiche une instance unique du volet Office personnalisé avec chaque message électronique ouvert. Créez plusieurs nouveaux messages électroniques pour tester le code.

Pour tester le complément VSTO

  1. Appuyez sur F5.

  2. Dans Outlook, cliquez sur Nouveau pour créer un message électronique.

  3. Dans le ruban du message électronique, cliquez sur l’onglet Compléments , puis sur le bouton Afficher le volet Office.

    Vérifiez qu’un volet Office avec le titre Mon volet Office s’affiche avec le message électronique.

  4. Dans le volet des tâches, tapez Premier volet des tâches dans la zone de texte.

  5. Fermez le volet de tâche.

    Vérifiez que l’état du bouton Afficher le volet Office change de sorte qu’il ne soit plus enfoncé.

  6. Cliquez de nouveau sur le bouton Afficher le volet Office .

    Assurez-vous que le volet des tâches s’ouvre et que la zone de texte contient encore la chaîne Premier volet des tâches.

  7. Dans Outlook, cliquez sur Nouveau pour créer un deuxième e-mail.

  8. Dans le ruban du message électronique, cliquez sur l’onglet Compléments , puis sur le bouton Afficher le volet Office.

    Vérifiez qu’un volet Office avec le titre Mon volet Office s’affiche avec le message électronique et que la zone de texte de ce volet Office est vide.

  9. Dans le volet des tâches, tapez Second volet des tâches dans la zone de texte.

  10. Remplacez le focus par le premier e-mail.

    Vérifiez que le volet Office associé à cet e-mail affiche toujours le premier volet Office dans la zone de texte.

    Ce complément VSTO gère également des scénarios plus avancés que vous pouvez tester. Par exemple, vous pouvez tester le comportement lors de l’affichage des e-mails à l’aide des boutons Élément suivant et Élément précédent. Vous pouvez également tester le comportement lorsque vous déchargez le complément VSTO, ouvrez plusieurs messages électroniques, puis rechargez le complément VSTO.

Étapes suivantes

Pour plus d’informations sur la création de volets Office personnalisés, consultez les rubriques suivantes :