Partager via


Procédure pas à pas : importation d'une zone de formulaire conçue dans Outlook

Mise à jour : novembre 2007

S'applique à

Les informations de cette rubrique s'appliquent uniquement aux projets Visual Studio Tools pour Office et aux versions de Microsoft Office spécifiés.

Type de projet

  • Projets au niveau de l'application

Version de Microsoft Office

  • Outlook 2007

Pour plus d'informations, consultez Fonctionnalités disponibles par type d'application et de projet.

Cette procédure pas à pas montre comment concevoir une zone de formulaire dans Microsoft Office Outlook, puis importer la zone de formulaire dans un projet de complément Visual Studio Tools pour Office Outlook en utilisant l'Assistant Nouvelle zone de formulaire. Lorsque vous concevez la zone de formulaire dans Outlook, vous pouvez ajouter des contrôles Outlook natifs à la zone de formulaire, qui sont liés aux données Outlook. Après avoir importé la zone de formulaire, vous pouvez gérer les événements de chaque contrôle.

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

  • Conception d'une zone de formulaire à l'aide du Concepteur de zones de formulaire d'Outlook.

  • Importation d'une zone de formulaire dans un projet de complément Outlook.

  • Gestion des événements de contrôles sur la zone de formulaire.

Remarque :

Il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur Visual Studio 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 Paramètres Visual Studio.

Composants requis

Vous avez besoin des composants suivants pour exécuter cette procédure pas à pas :

  • Visual Studio Tools pour Office (composant facultatif de Visual Studio 2008 Professional et Visual Studio Team System).

  • Microsoft Office Outlook 2007.

Remarque :

Votre ordinateur risque d'afficher des noms ou des emplacements différents pour certains éléments de l'interface utilisateur Visual Studio dans les instructions suivantes. Ces éléments sont déterminés par votre édition de Visual Studio et les paramètres que vous utilisez. Pour plus d'informations, consultez Paramètres Visual Studio.

Conception d'une zone de formulaire à l'aide du Concepteur de zones de formulaire d'Outlook

Dans cette étape vous concevrez une zone de formulaire dans Outlook. Vous enregistrerez ensuite la zone de formulaire à un emplacement facile à trouver afin que vous puissiez l'importer dans Visual Studio.

Cet exemple de zone du formulaire remplace complètement le formulaire de tâche habituel. Il permet de suivre la progression de toutes les tâches qui doivent être réalisées avant que la tâche principale puisse être exécutée (tâches requises). La zone de formulaire affiche une liste des tâches requises et l'état d'achèvement de l'opération pour chaque tâche de la liste. Les utilisateurs peuvent ajouter des tâches à la liste et les supprimer. Ils peuvent également actualiser l'état d'achèvement de chaque tâche.

Pou concevoir une zone de formulaire à l'aide du Concepteur de zones de formulaire d'Outlook

  1. Démarrez Microsoft Office Outlook 2007.

  2. Dans le menu Outils, pointez sur Formulaires, puis cliquez sur Créer un formulaire.

  3. Dans la zone Créer un formulaire, cliquez sur Tâche, puis sur Ouvrir.

  4. Dans le groupe Création de l'onglet Développeur, cliquez sur Zone de formulaire, puis sur Nouvelle zone de formulaire.

    Une nouvelle zone de formulaire s'affiche. Si le Sélecteur de champs n'apparaît pas, cliquez sur Sélecteur de champs dans le groupe Outils.

  5. Faites glisser les champs Objet et % réalisée du Sélecteur de champs vers la zone de formulaire.

  6. Dans le groupe Outils, cliquez sur Boîte à outils Contrôles pour ouvrir la Boîte à outils.

  7. Faites glisser une étiquette de la Boîte à outils vers la zone de formulaire. Positionnez l'étiquette sous les champs Objet et % réalisée.

  8. Cliquez avec le bouton droit sur l'étiquette, puis cliquez sur Propriétés avancées.

  9. Dans la fenêtre Propriétés, affectez à la propriété Caption la valeur Cette tâche dépend des tâches suivantes, affectez à la propriété Width la valeur 200, puis cliquez sur Appliquer.

  10. Faites glisser un contrôle ListBox de la Boîte à outils vers la zone de formulaire. Positionnez la zone de liste sous l'étiquette Cette tâche dépend des tâches suivantes.

  11. Sélectionnez la zone de liste que vous venez d'ajouter.

  12. Dans la fenêtre Propriétés, affectez à Width la valeur 300, puis cliquez sur Appliquer.

  13. Faites glisser une étiquette de la Boîte à outils vers la zone de formulaire. Positionnez l'étiquette sous la zone de liste.

  14. Sélectionnez l'étiquette qui venez d'ajouter.

  15. Dans la fenêtre Propriétés, affectez à la propriété Caption la valeur Sélectionnez une tâche à ajouter à la liste de tâches dépendantes, affectez à la propriété Width la valeur 200, puis cliquez sur Appliquer.

  16. Faites glisser un contrôle ComboBox de la Boîte à outils vers la zone de formulaire. Positionnez la zone de liste déroulante sous l'étiquette Sélectionnez une tâche à ajouter à la liste de tâches dépendantes.

  17. Sélectionnez la zone de liste déroulante que vous venez d'ajouter.

  18. Dans la fenêtre Propriétés, affectez à la propriété Width la valeur 300, puis cliquez sur Appliquer.

  19. Faites glisser un contrôle CommandButton de la Boîte à outils jusqu'à la zone de formulaire. Positionnez le bouton de commande en regard de la zone de liste déroulante.

  20. Sélectionnez le bouton de commande que vous venez d'ajouter.

  21. Dans la fenêtre Propriétés, affectez à Nom la valeur AddDependentTask, affectez à Caption la valeur Ajouter tâche dépendante, affectez à Width la valeur 100, puis cliquez sur Appliquer.

  22. Dans le Sélecteur de champs, cliquez sur Nouveau.

  23. Dans la boîte de dialogue Nouveau champ, tapez hiddenField dans le champ Nom, puis cliquez sur OK.

  24. Faites glisser le champ hiddenField du Sélecteur de champs vers la zone de formulaire.

  25. Dans la fenêtre Propriétés, affectez à Visible la valeur 0 - False, puis cliquez sur Appliquer.

  26. Dans le groupe Création de l'onglet Développeur, cliquez sur Zone de formulaire, puis sur Enregistrer la zone du formulaire sous. Attribuez le nom TaskFormRegion à la zone de formulaire et enregistrez-la dans un répertoire local de votre ordinateur.

    Outlook enregistre la zone de formulaire en tant que fichier de stockage de formulaire Outlook (.ofs). La zone de formulaire est enregistrée sous le nom TaskFormRegion.ofs.

  27. Quittez Outlook.

Création d'un projet de complément Outlook

Dans cette étape, vous allez créer un projet de complément Outlook. À une étape ultérieure de cette procédure, vous importerez la zone de formulaire dans le projet.

Pour créer un projet de complément Outlook

  1. Dans Visual Studio, créez un projet de complément Outlook 2007 et nommez-le TaskAddIn.

  2. Dans la boîte de dialogue Nouveau projet, sélectionnez Créer le répertoire pour la solution.

  3. Enregistrez le projet dans le répertoire de projet par défaut.

    Pour plus d'informations, consultez Comment : créer des projets Visual Studio Tools pour Office.

Importation de la zone de formulaire

Vous pouvez importer la zone de formulaire que vous avez conçue dans Outlook dans le projet de complément Outlook en utilisant l'Assistant Nouvelle zone de formulaire Outlook.

Pour ajouter la zone de formulaire dans le projet de complément Outlook

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet TaskAddIn, pointez sur Ajouter, puis cliquez sur Nouvel élément.

  2. Dans le volet Modèles, sélectionnez Zone de formulaire Outlook, nommez le fichier TaskFormRegion, puis cliquez sur Ajouter.

    L'Assistant Nouvelle zone de formulaireOutlook démarre.

  3. Sur la page Sélectionnez la méthode de création de la zone de formulaire, cliquez sur Importer un fichier de stockage de formulaire Outlook (.ofs), puis cliquez sur Parcourir.

  4. Dans la boîte de dialogue Emplacement du fichier de zone du formulaire Outlook existant, accédez à l'emplacement de TaskFormRegion.ofs, sélectionnez TaskFormRegion.ofs, cliquez Ouvert, puis cliquez sur Suivant.

  5. Sur la page Sélectionnez le type de zone de formulaire que vous souhaitez créer, cliquez sur Remplacement global, puis cliquez sur Suivant.

    Une zone de formulaire de remplacement global remplace le formulaire Outlook complet. Pour plus d'informations sur les types de zones de formulaire, consultez Création de zones de formulaire Outlook.

  6. Sur la page Fournissez un texte descriptif et sélectionnez vos préférences d'affichage, cliquez sur Suivant.

  7. Sur la page Identifiez les classes de message qui afficheront cette zone de formulaire, dans le champ Quelles classes de message personnalisées afficheront cette zone de formulaire ?, tapez IPM.Task.TaskFormRegion, puis cliquez sur Terminer.

    Un fichier TaskFormRegion.cs ou TaskFormRegion.vb est ajouté à votre projet.

Gestion des événements de contrôles sur la zone de formulaire

Maintenant que la zone de formulaire est dans le projet, vous pouvez ajouter le code qui gère l'événement Microsoft.Office.Interop.Outlook.OlkCommandButton.Click du bouton que vous avez ajouté à la zone de formulaire dans Outlook.

Ajoutez également le code à l'événement FormRegionShowing qui met à jour des contrôles sur la zone de formulaire lorsque la zone de formulaire apparaît.

Pour gérer des événements de contrôles sur la zone de formulaire

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

    TaskFormRegion.cs ou TaskFormRegion.vb s'ouvre dans l'éditeur de code.

  2. Ajoutez le code suivant à la classe TaskFormRegion. Ce code remplit la zone de liste déroulante sur la zone de formulaire avec la ligne Objet de chaque tâche à partir du dossier Tâches d'Outlook.

    Private Sub populateComboBox()
        Dim Application As New Outlook.Application()
        Dim outlookNameSpace As Outlook.NameSpace = _
        Application.GetNamespace("MAPI")
        Dim taskFolder As Outlook.MAPIFolder = _
        outlookNameSpace.GetDefaultFolder _
            (Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderTasks)
        Dim taskItems As Outlook.Items = taskFolder.Items
        Dim task As Outlook.TaskItem
        For Each task In taskItems
            If Not (task.Subject Is Nothing) Then
                comboBox1.AddItem(task.Subject, System.Type.Missing)
            End If
        Next task
        comboBox1.Text = comboBox1.GetItem(0)
    End Sub
    
    private void populateComboBox()
    {
        Outlook.Application Application = new Outlook.Application();
        Outlook.NameSpace outlookNameSpace = Application.GetNamespace("MAPI");
        Outlook.MAPIFolder taskFolder = outlookNameSpace.GetDefaultFolder(
            Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderTasks);
        Outlook.Items taskItems = taskFolder.Items;
        foreach (Outlook.TaskItem task in taskItems)
        {
            if (task.Subject != null)
            {
                comboBox1.AddItem(task.Subject, System.Type.Missing);
            }
        }
        comboBox1.Text = comboBox1.GetItem(0);
    }
    
  3. Ajoutez le code suivant à la classe TaskFormRegion. Ce code exécute les tâches suivantes :

    • Recherche le Microsoft.Office.Interop.Outlook.TaskItem dans le dossier Tâches en appelant la méthode d'assistance FindTaskBySubjectName et en passant l'objet de la tâche souhaitée. Vous ajouterez la méthode d'assistance FindTaskBySubjectName à l'étape suivante.

    • Ajoute les valeurs Microsoft.Office.Interop.Outlook.TaskItem.Subject et Microsoft.Office.Interop.Outlook.TaskItem.PercentComplete à la zone de liste de tâches dépendantes.

    • Ajoute l'objet de la tâche au champ masqué sur la zone de formulaire. Le champ masqué stocke ces valeurs dans l'élément Outlook.

    Private Sub AddDependentTask_Click1() Handles addDependentTask.Click
        Dim tempTaskItem As Outlook.TaskItem = FindTaskBySubjectName _
            (comboBox1.Text)
        If Not (tempTaskItem Is Nothing) Then
            Me.listBox1.AddItem(tempTaskItem.PercentComplete.ToString() & _
                "% Complete -- " & tempTaskItem.Subject, System.Type.Missing)
            Me.olkTextBox3.Text = Me.olkTextBox3.Text & "|" & tempTaskItem.Subject
        End If
    End Sub
    
        void AddDependentTask_Click()
        {
            Outlook.TaskItem tempTaskItem = FindTaskBySubjectName(comboBox1.Text);
            if (tempTaskItem != null)
            {
                this.listBox1.AddItem(tempTaskItem.PercentComplete.ToString()
    + "% Complete -- " + tempTaskItem.Subject, System.Type.Missing);
                this.olkTextBox3.Text = this.olkTextBox3.Text + "|" + 
                    tempTaskItem.Subject;
            }
        }
    
  4. Ajoutez le code suivant à la classe TaskFormRegion. Ce code fournit la méthode d'assistance FindTaskBySubjectName décrite à l'étape précédente.

    Private Function FindTaskBySubjectName(ByVal subjectName As String) _
        As Outlook.TaskItem
        Dim Application As New Outlook.Application()
        Dim outlookNameSpace As Outlook.NameSpace = _
            Application.GetNamespace("MAPI")
        Dim tasksFolder As Outlook.MAPIFolder = _
            outlookNameSpace.GetDefaultFolder _
                (Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderTasks)
        Dim taskItems As Outlook.Items = tasksFolder.Items
        Dim taskItem As Outlook.TaskItem
        For Each taskItem In taskItems
            If taskItem.Subject = subjectName Then
                Return taskItem
            End If
        Next taskItem
        Return Nothing
    End Function
    
    private Outlook.TaskItem FindTaskBySubjectName(string subjectName)
    {
        Outlook.Application Application = new Outlook.Application();
        Outlook.NameSpace outlookNameSpace = Application.GetNamespace("MAPI");
        Outlook.MAPIFolder tasksFolder =
            outlookNameSpace.GetDefaultFolder(
        Microsoft.Office.Interop.Outlook.
            OlDefaultFolders.olFolderTasks);
        Outlook.Items taskItems = tasksFolder.Items;
        foreach (Outlook.TaskItem taskItem in taskItems)
        {
            if (taskItem.Subject == subjectName)
            {
                return taskItem;
            }
        }
        return null;
    }
    
  5. Ajoutez le code suivant à la classe TaskFormRegion. Ce code exécute les tâches suivantes :

    • Actualise la zone de liste sur la zone de formulaire avec l'état d'achèvement actuel de chaque tâche dépendante.

    • Analyse le champ de texte masqué pour obtenir l'objet de chaque tâche dépendante. Recherche ensuite chaque Microsoft.Office.Interop.Outlook.TaskItem dans le dossier Tâches en appelant la méthode d'assistance FindTaskBySubjectName et en passant l'objet de chaque tâche.

    • Ajoute les valeurs Microsoft.Office.Interop.Outlook.TaskItem.Subject et Microsoft.Office.Interop.Outlook.TaskItem.PercentComplete à la zone de liste de tâches dépendantes.

    Private Sub RefreshTaskListBox()
        listBox1.Clear()
        Dim tempTaskItem As Outlook.TaskItem
        Dim tempArray As [String]() = olkTextBox3.Text.Split(New [Char]() {"|"c})
    
        Dim tempString As String
        For Each tempString In tempArray
            tempTaskItem = FindTaskBySubjectName(tempString)
            If Not (tempTaskItem Is Nothing) Then
                Me.listBox1.AddItem(tempTaskItem.PercentComplete.ToString() & _
                    "% Complete -- " & tempTaskItem.Subject, System.Type.Missing)
            End If
        Next tempString
    End Sub
    
    void RefreshTaskListBox()
    {
        listBox1.Clear();
        Outlook.TaskItem tempTaskItem;
        String[] tempArray = olkTextBox3.Text.Split(new Char[] { '|' });
    
        foreach (string tempString in tempArray)
        {
            tempTaskItem = FindTaskBySubjectName(tempString);
            if (tempTaskItem != null)
            {
                this.listBox1.AddItem(tempTaskItem.PercentComplete.ToString()
                    + "% Complete -- " + tempTaskItem.Subject, 
                        System.Type.Missing);
            }
        }
    }
    
  6. Remplacez le gestionnaire d'événements TaskFormRegion_FormRegionShowing par le code suivant. Ce code exécute les tâches suivantes :

    • Remplit la zone de liste déroulante sur la zone de formulaire avec les objets de tâche lorsque la zone de formulaire apparaît.

    • Appelle la méthode d'assistance RefreshTaskListBox lorsque la zone de formulaire apparaît. Toutes les tâches dépendantes ajoutées à la zone de liste s'affichent lorsque l'élément a été ouvert précédemment.

    Private Sub TaskFormRegion_FormRegionShowing(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles MyBase.FormRegionShowing
        populateComboBox()
        RefreshTaskListBox()
    End Sub
    
    private void TaskFormRegion_FormRegionShowing
        (object sender, EventArgs e)
    {
        populateComboBox();
        RefreshTaskListBox();
        this.addDependentTask.Click += new
        Microsoft.Office.Interop.Outlook.
            OlkCommandButtonEvents_ClickEventHandler(AddDependentTask_Click);
    
    }
    

Test de la zone de formulaire Outlook

Pour tester la zone de formulaire, ajoutez des tâches à la liste de tâches requises sur la zone de formulaire. Mettez à jour l'état de réalisation d'une tâche requise, puis consultez l'état de réalisation de la tâche mis à jour dans la liste des tâches requises.

Pour tester la zone de formulaire

  1. Appuyez sur F5 pour exécuter le projet.

    Outlook démarre.

  2. Dans le menu Fichier d'Outlook, pointez sur Nouveau, puis cliquez sur Tâche.

  3. Dans le formulaire de tâche, tapez Tâche dépendante dans le champ Objet.

  4. Dans l'onglet Tâche du ruban, cliquez sur Enregistrer et fermer dans le groupe Actions.

  5. Dans le menu Fichier d'Outlook, pointez sur Nouveau, puis cliquez sur Choisir un formulaire.

  6. Dans la boîte de dialogue Choisir un formulaire, cliquez sur TaskFormRegion, puis cliquez sur Ouvrir.

    La zone de formulaire TaskFormRegion apparaît. Ce formulaire remplace le formulaire de tâche complet. La zone de liste déroulante Sélectionnez une tâche à ajouter à la liste de tâches dépendantes est remplie avec d'autres tâches dans le dossier Tâches.

  7. Dans le formulaire de tâche, tapez Tâche principale dans le champ Objet.

  8. Dans la zone de liste déroulante Sélectionnez une tâche à ajouter à la liste de tâches dépendantes, sélectionnez Tâche dépendante, puis cliquez sur Ajouter tâche dépendante.

    0% réalisée -- Tâche dépendante apparaît dans la zone de liste Cette tâche dépend des tâches suivantes. Cela indique que vous avez géré avec succès l'événement Microsoft.Office.Interop.Outlook.OlkCommandButton.Click du bouton.

  9. Enregistrez et fermez l'élément Tâche principale.

  10. Rouvrez l'élément Tâche dépendante dans Outlook.

  11. Sur le formulaire Tâche dépendante, modifiez la valeur du champ % réalisée en 50%.

  12. Dans l'onglet Tâche du ruban de tâches dépendantes, cliquez sur Enregistrer et fermer dans le groupe Actions.

  13. Rouvrez l'élément Tâche principale dans Outlook.

    50% réalisée -- Tâche dépendante apparaît maintenant dans la zone de liste Cette tâche dépend des tâches suivantes.

Étapes suivantes

Pour plus d'informations sur la personnalisation de l'interface utilisateur d'une application Office, consultez les rubriques suivantes :

Voir aussi

Tâches

Procédure pas à pas : conception d'une zone de formulaire Outlook

Comment : ajouter une zone de formulaire à un projet de complément Outlook

Comment : empêcher Outlook d'afficher une zone de formulaire

Comment : accéder à l'élément Outlook qui affiche la zone de formulaire

Concepts

Accès à une zone de formulaire au moment de l'exécution

Création de zones de formulaire Outlook

Directives pour la création de zones de formulaire Outlook

Association d'une zone de formulaire à une classe de message Outlook

Actions personnalisées dans les zones de formulaire Outlook