Procédure pas à pas : importation d'une zone de formulaire conçue dans Outlook
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 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.
S'applique à : Les informations contenues dans cette rubrique s'appliquent aux projets de niveau application pour Outlook 2013 et Outlook 2010. Pour en savoir plus, consultez Fonctionnalités disponibles par type d'application et de projet Office.
Cette procédure pas à pas décrit 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 de 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
Pour exécuter cette procédure pas à pas, vous devez disposer des composants suivants :
-
Une édition de Visual Studio 2012 qui inclut les outils de développement Microsoft Office. Pour plus d'informations, consultez [Configuration d'un ordinateur pour développer des solutions Office](bb398242\(v=vs.110\).md).
- Outlook 2013 ou Outlook 2010.
[!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.Ces éléments dépendent de l'édition de Visual Studio dont vous disposez et des paramètres que vous utilisez.Pour plus d’informations, consultez Paramètres Visual Studio.
Pour une démonstration vidéo connexe, consultez Comment faire pour créer des zones de formulaire Outlook à l'aide de Visual Studio 2008 ? (page éventuellement en anglais).
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
Démarrez Microsoft Office Outlook.
Dans Outlook, sous l'onglet développeur , cliquez sur Concevez un formulaire.Pour plus d’informations, consultez Comment : afficher l'onglet Développeur sur le ruban.
Dans la zone Créer un formulaire, cliquez sur Tâche, puis sur Ouvrir.
Dans Outlook, sous l'onglet développeur , dans le groupe Design , cliquez 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.
Faites glisser les champs Objet et % réalisée du Sélecteur de champs vers la zone de formulaire.
Dans le groupe Outils, cliquez sur Boîte à outils Contrôles pour ouvrir la Boîte à outils.
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.
Cliquez avec le bouton droit sur l'étiquette, puis cliquez sur Propriétés avancées.
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.
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.
Sélectionnez la zone de liste que vous venez d'ajouter.
Dans la fenêtre Propriétés, affectez à Width la valeur 300, puis cliquez sur Appliquer.
Faites glisser une étiquette de la Boîte à outils vers la zone de formulaire.Positionnez l'étiquette sous la zone de liste.
Sélectionnez l'étiquette qui venez d'ajouter.
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.
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.
Sélectionnez la zone de liste déroulante que vous venez d'ajouter.
Dans la fenêtre Propriétés, affectez à la propriété Width la valeur 300, puis cliquez sur Appliquer.
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.
Sélectionnez le bouton de commande que vous venez d'ajouter.
Dans la fenêtre Propriétés, affectez à Name la valeur AddDependentTask, affectez à Caption la valeur Ajouter une tâche dépendante, affectez à Width la valeur 100, puis cliquez sur Appliquer.
Dans le Sélecteur de champs, cliquez sur Nouveau.
Dans la boîte de dialogue Nouveau champ, tapez hiddenField dans le champ Nom, puis cliquez sur OK.
Faites glisser le champ hiddenField du Sélecteur de champs vers la zone de formulaire.
Dans la fenêtre Propriétés, affectez à Visible la valeur 0 - False, puis cliquez sur Appliquer.
Dans Outlook, sous l'onglet développeur , dans le groupe Design , cliquez sur le bouton Enregistrer , puis cliquez sur Enregistrez la zone de formulaire comme.
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.
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
Dans Visual Studio, créez un projet de complément Outlook et nommez-le TaskAddIn.
Dans la boîte de dialogue Nouveau projet, sélectionnez Créer le répertoire pour la solution.
Enregistrez le projet dans le répertoire de projet par défaut.
Pour plus d’informations, consultez Comment : créer des projets Office dans Visual Studio.
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
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet TaskAddIn, pointez sur Ajouter, puis cliquez sur Nouvel élément.
Dans le volet Modèles, sélectionnez Zone de formulaire Outlook, nommez le fichier TaskFormRegion, puis cliquez sur Ajouter.
L'Assistant Nouvelle zone de formulaire Outlook démarre.
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.
Dans la boîte de dialogue Emplacement du fichier de zone du formulaire Outlook existant, accédez à l'emplacement de TaskFormRegion.ofs, sélectionnez ce dernier, cliquez sur Ouvrir, puis sur Suivant.
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.
Sur la page Fournissez un texte descriptif et sélectionnez vos préférences d'affichage, cliquez sur Suivant.
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
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.
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); }
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; } }
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; }
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); } } }
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
Appuyez sur F5 pour exécuter le projet.
Outlook démarre.
Dans Outlook, sous l'onglet Accueil , cliquez sur nouveaux éléments, puis cliquez sur Tâche.
Dans le formulaire de tâche, tapez Tâche dépendante dans le champ Objet.
Dans l'onglet Tâche du ruban, cliquez sur Enregistrer et fermer dans le groupe Actions.
Dans Outlook, sous l'onglet Accueil , cliquez sur nouveaux éléments, cliquez sur plus d'éléments, puis cliquez sur Sélectionnez le formulaire.
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 du dossier Tâches.
Dans le formulaire de tâche, tapez Tâche principale dans le champ Objet.
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 une tâche dépendante.
0 % achevé -- 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 correctement géré l'événement Microsoft.Office.Interop.Outlook.OlkCommandButton.Click du bouton.
Enregistrez puis fermez l'élément Tâche principale.
Rouvrez l'élément Tâche dépendante dans Outlook.
Sur le formulaire Tâche dépendante, modifiez la valeur du champ % achevé en 50 %.
Dans l'onglet Tâche du ruban des tâches dépendantes, cliquez sur Enregistrer et fermer dans le groupe Actions.
Rouvrez l'élément Tâche principale dans Outlook.
50 % achevé -- 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 :
Pour en savoir plus sur la conception de l'apparence d'une zone de formulaire par glissement des contrôles managés sur un concepteur visuel, consultez Procédure pas à pas : conception d'une zone de formulaire Outlook.
Pour en savoir plus sur la personnalisation du ruban d'un élément Outlook, consultez Personnalisation d'un ruban pour Outlook.
Pour en savoir plus sur l'ajout d'un volet de tâches personnalisé à Outlook, consultez Volets de tâches personnalisés.
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
Concepts
Accès à une zone de formulaire au moment de l'exécution
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