Procédure pas à pas : création d'un modèle à l'aide de contrôles de contenu
Cette procédure pas à pas montre comment créer une personnalisation au niveau du document en utilisant des contrôles de contenu pour générer des contenus structurés et réutilisables dans un modèle Microsoft Office Word.
S'applique à : Les informations contenues dans cette rubrique s'appliquent aux projets de niveau document pour Word 2013 et Word 2010. Pour en savoir plus, consultez Fonctionnalités disponibles par type d'application et de projet Office.
Word vous permet de créer une collection de sections de document réutilisables, appelées blocs de construction.Cette procédure pas à pas indique comment créer deux tableaux en tant que blocs de construction.Chacun d'entre eux comporte plusieurs contrôles de contenu susceptibles de contenir différents types de contenu, comme du texte brut ou des dates.L'un des tableaux contient des informations à propos d'un employé, et l'autre des commentaires client.
Après avoir créé un document à partir du modèle, vous pouvez ajouter l'un ou l'autre tableau à celui-ci en utilisant plusieurs objets BuildingBlockGalleryContentControl, qui affichent les blocs de construction disponibles dans le modèle.
Cette procédure pas à pas décrit les tâches suivantes :
Création de tableaux contenant des contrôles de contenu dans un modèle Word au moment du design
Remplissage par programmation d'un contrôle du contenu de type "zone de liste déroulante" et d'un contrôle de contenu de type "liste déroulante"
Protection d'un tableau spécifié contre toute modification
Ajout de tableaux à la collection de blocs de construction d'un modèle
Création d'un contrôle de contenu affichant les blocs de construction disponibles dans le modèle
[!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).
- Word 2013 ou Word 2010.
Création d'un projet de modèle Word
Créez un modèle Word afin que les utilisateurs puissent créer leurs propres copies facilement.
Pour créer un projet de modèle Word
Créez un projet de modèle Word avec le nom MyBuildingBlockTemplate.À l'aide de l'Assistant, créez un document dans la solution.Pour plus d’informations, consultez Comment : créer des projets Office dans Visual Studio.
Visual Studio ouvre le nouveau modèle Word dans le concepteur et ajoute le projet MonModèleDeBlocDeConstruction à l'Explorateur de solutions.
Création du tableau Employé
Créez un tableau contenant quatre types différents de contrôles de contenu où l'utilisateur peut entrer des informations à propos d'un employé.
Pour créer le tableau Employé
Dans le modèle Word hébergé dans le concepteur Visual Studio, sur le ruban, cliquez sur l'onglet Insertion.
Dans le groupe Tables, cliquez sur Table et insérez un tableau comportant 2 colonnes et 4 lignes.
Tapez du texte dans la première colonne de manière à obtenir quelque chose qui ressemble à ceci :
Nom de l'employé
Date d'embauche
Titre
Picture
Cliquez dans la première cellule de la deuxième colonne (en regard de Nom de l'employé).
Dans le ruban, cliquez sur l'onglet Développeur.
[!REMARQUE]
Si l'onglet Développeur n'est pas visible, vous devez préalablement l'afficher.Pour plus d’informations, consultez Comment : afficher l'onglet Développeur sur le ruban.
Dans le groupe Contrôles, cliquez sur le bouton Texte pour ajouter PlainTextContentControl à la première cellule.
Cliquez sur la deuxième cellule de la deuxième colonne (en regard de Date d'embauche).
Dans le groupe Contrôles, cliquez sur le bouton Sélecteur de dates pour ajouter DatePickerContentControl à la deuxième cellule.
Cliquez sur la troisième cellule de la deuxième colonne (en regard de Titre).
Dans le groupe Contrôles, cliquez sur le bouton ComboBox pour ajouter ComboBoxContentControl à la troisième cellule.
Cliquez sur la dernière cellule de la deuxième colonne (en regard de Picture).
Dans le groupe Contrôles, cliquez sur le bouton Contrôle de contenu d'image pour ajouter PictureContentControl à la dernière cellule.
Création du tableau Commentaires client
Créez un tableau contenant trois types de contrôles de contenu où l'utilisateur peut entrer des informations sur des commentaires client.
Pour créer le tableau Commentaires client
Dans le modèle Word, cliquez dans la ligne après le tableau Employé que vous avez ajouté précédemment et appuyez sur ENTRÉE pour ajouter un nouveau paragraphe.
Sur le ruban, cliquez sur l'onglet Insertion.
Dans le groupe Tableaux, cliquez sur Tableau et insérez un tableau comportant 2 colonnes et 3 lignes.
Tapez du texte dans la première colonne de manière à obtenir quelque chose qui ressemble à ceci :
Nom du client
Satisfaction
Commentaires
Cliquez dans la première cellule de la deuxième colonne (en regard de Nom du client).
Dans le ruban, cliquez sur l'onglet Développeur.
Dans le groupe Contrôles, cliquez sur le bouton Texte pour ajouter PlainTextContentControl à la première cellule.
Cliquez dans la deuxième cellule de la deuxième colonne (en regard de Satisfaction).
Dans le groupe Contrôles, cliquez sur le bouton Liste déroulante pour ajouter DropDownListContentControl à la deuxième cellule.
Cliquez dans la dernière cellule de la deuxième colonne (en regard de Commentaires).
Dans le groupe Contrôles, cliquez sur le bouton Texte enrichi pour ajouter RichTextContentControl à la dernière cellule.
Remplissage de la zone de liste déroulante et de la liste déroulante par programmation
Vous pouvez initialiser des contrôles de contenu au moment du design en utilisant la fenêtre Propriétés de Visual Studio.Vous pouvez également les initialiser au moment de l'exécution, ce qui vous permet de définir leurs états initiaux de manière dynamique.Pour cette procédure pas à pas, utilisez du code pour remplir les entrées des contrôles ComboBoxContentControl et DropDownListContentControl au moment de l'exécution afin que vous puissiez voir comment fonctionnent ces objets.
Pour modifier l'interface utilisateur des contrôles de contenu par programmation
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur ThisDocument.cs ou ThisDocument.vb, puis sélectionnez Afficher le code.
Ajoutez le code suivant à la classe ThisDocument :ce code déclare plusieurs objets que vous utiliserez à une étape ultérieure de cette procédure.
Private GroupControl1 As Microsoft.Office.Tools.Word.GroupContentControl Private BuildingBlockControl1 As Microsoft.Office.Tools.Word.BuildingBlockGalleryContentControl Private BuildingBlockControl2 As Microsoft.Office.Tools.Word.BuildingBlockGalleryContentControl
private Microsoft.Office.Tools.Word.GroupContentControl groupControl1; private Microsoft.Office.Tools.Word.BuildingBlockGalleryContentControl buildingBlockControl1; private Microsoft.Office.Tools.Word.BuildingBlockGalleryContentControl buildingBlockControl2;
Ajoutez le code suivant à la méthode ThisDocument_Startup de la classe ThisDocument.Ce code ajoute des entrées aux contrôles ComboBoxContentControl et DropDownListContentControl des tableaux et définit le texte de l'espace réservé affiché dans chacun de ces contrôles avant que l'utilisateur ne les modifie.
ComboBoxContentControl1.PlaceholderText = "Choose a title, or enter your own" ComboBoxContentControl1.DropDownListEntries.Add("Engineer", "Engineer", 0) ComboBoxContentControl1.DropDownListEntries.Add("Designer", "Designer", 1) ComboBoxContentControl1.DropDownListEntries.Add("Manager", "Manager", 2) DropDownListContentControl1.PlaceholderText = _ "Choose a rating (1 lowest, 3 highest)" DropDownListContentControl1.DropDownListEntries.Add("1", "1", 0) DropDownListContentControl1.DropDownListEntries.Add("2", "2", 1) DropDownListContentControl1.DropDownListEntries.Add("3", "3", 2)
comboBoxContentControl1.PlaceholderText = "Choose a title, or enter your own"; comboBoxContentControl1.DropDownListEntries.Add("Engineer", "Engineer", 0); comboBoxContentControl1.DropDownListEntries.Add("Designer", "Designer", 1); comboBoxContentControl1.DropDownListEntries.Add("Manager", "Manager", 2); dropDownListContentControl1.PlaceholderText = "Choose a rating (1 lowest, 3 highest)"; dropDownListContentControl1.DropDownListEntries.Add("1", "1", 0); dropDownListContentControl1.DropDownListEntries.Add("2", "2", 1); dropDownListContentControl1.DropDownListEntries.Add("3", "3", 2);
Protection du tableau Employé contre toute modification
Utilisez l'objet GroupContentControl que vous avez déclaré précédemment pour protéger le tableau Employé.Une fois cette protection activée, les utilisateurs peuvent toujours modifier les contrôles de contenu du tableau.Toutefois, ils ne peuvent plus éditer le texte de la première colonne ni modifier le tableau d'une quelconque autre manière, par exemple en ajoutant ou en supprimant des lignes et des colonnes.Pour plus d'informations sur l'utilisation d'un contrôle GroupContentControl pour protéger une partie d'un document, consultez Contrôles de contenu.
Pour empêcher les utilisateurs de modifier le tableau Employé
Ajoutez le code suivant à la méthode ThisDocument_Startup de la classe ThisDocument, après le code que vous avez ajouté à l'étape précédente.Ce code empêche les utilisateurs de modifier le tableau Employé en plaçant celui-ci à l'intérieur de l'objet GroupContentControl que vous avez déclaré précédemment.
Me.Tables(1).Select() GroupControl1 = Me.Controls.AddGroupContentControl("groupControl1")
this.Tables[1].Range.Select(); groupControl1 = this.Controls.AddGroupContentControl("groupControl1");
Ajout des tableaux à la collection de blocs de construction
Ajoutez les tableaux créés à une collection de blocs de construction du modèle afin que les utilisateurs puissent insérer ceux-ci dans un document.Pour plus d'informations sur les blocs de construction de document, consultez Contrôles de contenu.
Pour ajouter les tableaux aux blocs de construction du modèle
Ajoutez le code suivant à la méthode ThisDocument_Startup de la classe ThisDocument, après le code que vous avez ajouté à l'étape précédente.Ce code ajoute de nouveaux blocs de construction contenant les tableaux à la collection Microsoft.Office.Interop.Word.BuildingBlockEntries, qui comprend tous les blocs de construction réutilisables du modèle.Les nouveaux blocs de construction sont définis dans une nouvelle catégorie nommée Informations employé et client et se voient affecter le type de bloc de construction Microsoft.Office.Interop.Word.WdBuildingBlockTypes.wdTypeCustom1.
Dim template1 As Word.Template = TryCast(Me.AttachedTemplate, Word.Template) If template1 IsNot Nothing Then template1.BuildingBlockEntries.Add("Employee Table", _ Word.WdBuildingBlockTypes.wdTypeCustom1, "Employee and Customer Information", _ Me.Tables(1).Range, InsertOptions:=Word.WdDocPartInsertOptions.wdInsertContent) template1.BuildingBlockEntries.Add("Customer Table", _ Word.WdBuildingBlockTypes.wdTypeCustom1, "Employee and Customer Information", _ Me.Tables(2).Range, InsertOptions:=Word.WdDocPartInsertOptions.wdInsertContent) End If
Word.Template template1 = this.AttachedTemplate as Word.Template; if (template1 != null) { object description = null; template1.BuildingBlockEntries.Add("Employee Table", Word.WdBuildingBlockTypes.wdTypeCustom1, "Employee and Customer Information", this.Tables[1].Range, ref description, Word.WdDocPartInsertOptions.wdInsertContent); template1.BuildingBlockEntries.Add("Customer Table", Word.WdBuildingBlockTypes.wdTypeCustom1, "Employee and Customer Information", this.Tables[2].Range, ref description, Word.WdDocPartInsertOptions.wdInsertContent); }
Ajoutez le code suivant à la méthode ThisDocument_Startup de la classe ThisDocument, après le code que vous avez ajouté à l'étape précédente.Ce code supprime les tableaux du modèle.Ceux-ci ne sont plus requis, puisque vous les avez ajoutés à la galerie des blocs de construction réutilisables du modèle.Le code commence par faire passer le document en mode design de manière à vous permettre de supprimer le tableau Employé protégé.
If Me.FormsDesign = False Then Me.ToggleFormsDesign() End If Me.Tables(2).Delete() Me.Tables(1).Delete() Me.ToggleFormsDesign()
if (!this.FormsDesign) { this.ToggleFormsDesign(); } this.Tables[2].Delete(); this.Tables[1].Delete(); this.ToggleFormsDesign();
Création d'un contrôle de contenu affichant les blocs de construction
Créez un contrôle de contenu permettant d'accéder aux blocs de construction (autrement dit, aux tableaux) que vous avez créés précédemment.Les utilisateurs peuvent cliquer sur ce contrôle pour ajouter les tableaux à un document.
Pour créer un contrôle de contenu affichant les blocs de construction
Ajoutez le code suivant à la méthode ThisDocument_Startup de la classe ThisDocument, après le code que vous avez ajouté à l'étape précédente.Ce code initialise l'objet BuildingBlockGalleryContentControl que vous avez déclaré précédemment.L'objet BuildingBlockGalleryContentControl affiche tous les blocs de construction définis dans la catégorie Informations employé et client et possédant le type de bloc de construction Microsoft.Office.Interop.Word.WdBuildingBlockTypes.wdTypeCustom1.
BuildingBlockControl1 = Me.Controls.AddBuildingBlockGalleryContentControl( _ Me.Paragraphs(1).Range, "buildingBlockControl1") BuildingBlockControl1.BuildingBlockCategory = "Employee and Customer Information" BuildingBlockControl1.BuildingBlockType = Word.WdBuildingBlockTypes.wdTypeCustom1 BuildingBlockControl1.PlaceholderText = "Choose your first building block" BuildingBlockControl2 = Me.Controls.AddBuildingBlockGalleryContentControl( _ Me.Paragraphs(2).Range, "buildingBlockControl2") BuildingBlockControl2.BuildingBlockCategory = "Employee and Customer Information" BuildingBlockControl2.BuildingBlockType = Word.WdBuildingBlockTypes.wdTypeCustom1 BuildingBlockControl2.PlaceholderText = "Choose your second building block"
buildingBlockControl1 = this.Controls.AddBuildingBlockGalleryContentControl( this.Paragraphs[1].Range, "buildingBlockControl1"); buildingBlockControl1.BuildingBlockCategory = "Employee and Customer Information"; buildingBlockControl1.BuildingBlockType = Word.WdBuildingBlockTypes.wdTypeCustom1; buildingBlockControl1.PlaceholderText = "Choose your first building block"; buildingBlockControl2 = this.Controls.AddBuildingBlockGalleryContentControl( this.Paragraphs[2].Range, "buildingBlockControl2"); buildingBlockControl2.BuildingBlockCategory = "Employee and Customer Information"; buildingBlockControl2.BuildingBlockType = Word.WdBuildingBlockTypes.wdTypeCustom1; buildingBlockControl2.PlaceholderText = "Choose your second building block";
Test du projet
Les utilisateurs peuvent cliquer sur les contrôles de la galerie des blocs de construction du document pour insérer le tableau Employé ou le tableau Commentaires client.Ils peuvent aussi taper ou sélectionner des réponses dans les contrôles de contenu des deux tableaux.Enfin, ils peuvent modifier d'autres parties du tableau Commentaires client, mais pas du tableau Employé.
Pour tester le tableau Employé
Appuyez sur F5 pour exécuter le projet.
Cliquez sur Choisir votre premier bloc de construction pour afficher le premier contrôle de contenu de la galerie des blocs de construction.
Cliquez sur la flèche de déroulement située en regard de l'en-tête Galerie 1 personnalisée du contrôle et sélectionnez Tableau Employé.
Cliquez dans la cellule à droite de Nom de l'employé et tapez un nom.
Vérifiez que vous ne pouvez ajouter que du texte à cette cellule.L'objet PlainTextContentControl permet aux utilisateurs d'ajouter du texte uniquement, pas d'autres types de contenu tels que des illustrations ou des tableaux.
Cliquez dans la cellule à droite de Date d'embauche et sélectionnez une date dans le sélecteur de dates.
Cliquez dans la cellule à droite de Titre et sélectionnez l'une des fonctions dans la zone de liste déroulante.
Vous pouvez également taper le nom d'une fonction qui ne figure pas dans la liste.C'est possible parce que l'objet ComboBoxContentControl permet aux utilisateurs de sélectionner une option dans une liste d'entrées ou de taper leurs propres entrées.
Cliquez sur l'icône dans la cellule à droite de Picture et recherchez une image pour l'afficher.
Essayez d'ajouter des lignes ou des colonnes au tableau et d'en supprimer.Vérifiez que vous ne pouvez pas le modifier.L'objet GroupContentControl vous empêche d'apporter la moindre modification.
Pour tester le tableau Commentaires client
Cliquez sur Choisir votre deuxième bloc de construction pour afficher le deuxième contrôle de contenu de la galerie des blocs de construction.
Cliquez sur la flèche de déroulement située en regard de l'en-tête Galerie 1 personnalisée dans le contrôle et sélectionnez Tableau Client.
Cliquez dans la cellule à droite de Nom du client et tapez un nom.
Cliquez dans la cellule à droite de Satisfaction et sélectionnez l'une des options disponibles.
Vérifiez que vous ne pouvez pas taper votre propre entrée.L'objet DropDownListContentControl permet uniquement aux utilisateurs de sélectionner une option dans une liste d'entrées.
Cliquez dans la cellule à droite de Commentaires et tapez des commentaires.
Vous pouvez aussi ajouter quelques éléments de contenu autres que du texte, comme une illustration ou un tableau.C'est possible parce que l'objet RichTextContentControl permet aux utilisateurs d'ajouter du contenu autre que du texte.
Vérifiez que vous pouvez ajouter des lignes ou des colonnes au tableau et en supprimer.C'est possible parce que vous n'avez pas protégé le tableau en le plaçant dans un objet GroupContentControl.
Fermez le modèle.
Étapes suivantes
Pour en savoir plus sur l'utilisation des contrôles de contenu, consultez la rubrique suivante :
- Lier des contrôles du contenu à des fragments XML, ou parties XML personnalisées, incorporés dans un document.Pour plus d’informations, consultez Procédure pas à pas : liaison de contrôles de contenu à des parties XML personnalisées.
Voir aussi
Tâches
Comment : ajouter des contrôles de contenu à des documents Word
Comment : protéger des parties de documents à l'aide de contrôles de contenu
Concepts
Automatisation de Word à l'aide d'objets étendus
Vue d'ensemble des éléments hôtes et des contrôles hôtes
Limitations de programmation des éléments hôtes et des contrôles hôtes
Ajout de contrôles à des documents Office au moment de l'exécution