Comment : ajouter des contrôles de contenu à des documents Word
Dans les projets Word au niveau du document, vous pouvez ajouter des contrôles de contenu au document de votre projet au moment du design ou de l'exécution. Dans les projets Word au niveau de l'application, vous pouvez ajouter des contrôles de contenu à tout document ouvert au moment de l'exécution.
S'applique à : Les informations contenues dans cette rubrique s'appliquent aux projets de niveau document et de niveau application pour Word 2007 et Word 2010. Pour en savoir plus, consultez Fonctionnalités disponibles par type d'application et de projet Office.
Cette rubrique décrit les tâches suivantes :
Ajout de contrôles de contenu au moment du design
Ajout de contrôles de contenu au moment de l'exécution dans un projet au niveau du document
Ajout de contrôles de contenu au moment de l'exécution dans un projet au niveau de l'application
Pour plus d'informations sur les contrôles de contenu, consultez Contrôles de contenu.
Ajout de contrôles de contenu au moment du design
Il existe plusieurs manières d'ajouter des contrôles de contenu au document dans un projet au niveau du document au moment du design :
Ajoutez un contrôle de contenu à partir de l'onglet Contrôles Word de la Boîte à outils.
Ajoutez un contrôle de contenu à votre document de la manière dont vous ajouteriez un contrôle de contenu natif dans Word.
Faites glisser un contrôle de contenu vers votre document depuis la fenêtre Sources de données. Cette opération est utile lorsque vous souhaitez lier le contrôle à des données au moment de sa création. Pour plus d'informations, consultez Comment : remplir des documents avec les données d'objets et Comment : remplir des documents avec les données d'une base de données.
Notes
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.
Pour ajouter un contrôle de contenu à un document en utilisant la Boîte à outils
Dans le document hébergé par le concepteur Visual Studio, placez le curseur où vous souhaitez ajouter le contrôle de contenu ou sélectionnez le texte qu'il doit remplacer.
Ouvrez la Boîte à outils et cliquez sur l'onglet Contrôles Word.
Ajoutez le contrôle de l'une des manières suivantes :
Double-cliquez sur un contrôle de contenu dans la Boîte à outils.
ou
Cliquez sur un contrôle de contenu dans la Boîte à outils, puis appuyez sur la touche ENTRÉE.
ou
Faites glisser un contrôle de contenu de la Boîte à outils vers le document. Le contrôle de contenu est ajouté à la sélection actuelle dans le document, mais pas à l'emplacement du pointeur de la souris.
Notes
Vous ne pouvez pas ajouter un GroupContentControl à l'aide de la Boîte à outils. Cette opération n'est possible que dans Word, ou au moment de l'exécution.
Notes
Visual Studio ne fournit pas de contrôle de contenu de case à cocher dans la Boîte à outils pour les projets Word 2010. Pour ajouter un contrôle de contenu de case à cocher au document, vous devez créer un objet ContentControl par programmation. Pour plus d'informations, consultez Contrôles de contenu.
Pour ajouter un contrôle de contenu à un document dans Word
Dans le document hébergé par le concepteur Visual Studio, placez le curseur où vous souhaitez ajouter le contrôle de contenu ou sélectionnez le texte qu'il doit remplacer.
Dans le ruban, cliquez sur l'onglet Développeur.
Notes
Si l'onglet Développeur n'est pas visible, vous devez d'abord l'afficher. Pour plus d'informations, consultez Comment : afficher l'onglet Développeur sur le ruban.
Dans le groupe Contrôles, cliquez sur l'icône du contrôle de contenu à ajouter.
Ajout de contrôles de contenu au moment de l'exécution dans un projet au niveau du document
Vous pouvez ajouter par programmation des contrôles de contenu à votre document au moment de l'exécution en utilisant des méthodes de la propriété Controls de la classe ThisDocument dans votre projet. Chaque méthode possède trois surcharges que vous pouvez utiliser pour ajouter un contrôle de contenu de l'une des manières suivantes :
Ajoutez un contrôle à la sélection actuelle.
Ajoutez un contrôle à une plage spécifiée.
Ajoutez un contrôle basé sur un contrôle de contenu natif dans le document.
Les contrôles de contenu créés dynamiquement ne sont pas conservés dans le document après sa fermeture. Toutefois, un contrôle de contenu natif reste dans le document. Vous pouvez recréer un contrôle de contenu basé sur un contrôle de contenu natif la prochaine fois que vous ouvrez le document. Pour plus d'informations, consultez Ajout de contrôles à des documents Office au moment de l'exécution.
Notes
Pour ajouter un contrôle de contenu de case à cocher à un document d'un projet Word 2010, vous devez créer un objet ContentControl. Pour plus d'informations, consultez Contrôles de contenu.
Pour ajouter un contrôle de contenu à la sélection actuelle
Utilisez une méthode ControlCollection portant le nom Add<classe de contrôle> (où classe de contrôle est le nom de classe du contrôle de contenu que vous souhaitez ajouter, comme AddRichTextContentControl) et un paramètre unique pour le nom du nouveau contrôle.
L'exemple de code suivant utilise la méthode ControlCollection.AddRichTextContentControl(String) pour ajouter un nouveau RichTextContentControl au début du document. Pour exécuter ce code, ajoutez-le à la classe ThisDocument de votre projet et appelez la méthode AddRichTextControlAtSelection à partir du gestionnaire d'événements ThisDocument_Startup.
Dim richTextControl1 As Microsoft.Office.Tools.Word.RichTextContentControl Private Sub AddRichTextControlAtSelection() Me.Paragraphs(1).Range.InsertParagraphBefore() Me.Paragraphs(1).Range.Select() richTextControl1 = Me.Controls.AddRichTextContentControl("richTextControl1") richTextControl1.PlaceholderText = "Enter your first name" End Sub
private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl1; private void AddRichTextControlAtSelection() { this.Paragraphs[1].Range.InsertParagraphBefore(); this.Paragraphs[1].Range.Select(); richTextControl1 = this.Controls.AddRichTextContentControl("richTextControl1"); richTextControl1.PlaceholderText = "Enter your first name"; }
Pour ajouter un contrôle de contenu à une plage spécifiée
Utilisez une méthode ControlCollection qui porte le nom Add<classe de contrôle> (où classe de contrôle est le nom de la classe du contrôle de contenu à ajouter, comme AddRichTextContentControl) et possède un paramètre Microsoft.Office.Interop.Word.Range.
L'exemple de code suivant utilise la méthode ControlCollection.AddRichTextContentControl(Range, String) pour ajouter un nouveau RichTextContentControl au début du document. Pour exécuter ce code, ajoutez-le à la classe ThisDocument du projet et appelez la méthode AddRichTextControlAtRange à partir du gestionnaire d'événements ThisDocument_Startup.
Dim richTextControl2 As Microsoft.Office.Tools.Word.RichTextContentControl Private Sub AddRichTextControlAtRange() Me.Paragraphs(1).Range.InsertParagraphBefore() richTextControl2 = Me.Controls.AddRichTextContentControl(Me.Paragraphs(1).Range, _ "richTextControl2") richTextControl2.PlaceholderText = "Enter your first name" End Sub
private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl2; private void AddRichTextControlAtRange() { this.Paragraphs[1].Range.InsertParagraphBefore(); richTextControl2 = this.Controls.AddRichTextContentControl(this.Paragraphs[1].Range, "richTextControl2"); richTextControl2.PlaceholderText = "Enter your first name"; }
Pour ajouter un contrôle de contenu basé sur un contrôle de contenu natif
Utilisez une méthode ControlCollection qui porte le nom Add<classe de contrôle> (où classe de contrôle est le nom de la classe du contrôle de contenu à ajouter, comme AddRichTextContentControl) et possède un paramètre Microsoft.Office.Interop.Word.ContentControl.
L'exemple de code suivant utilise la méthode ControlCollection.AddRichTextContentControl(ContentControl, String) pour créer un RichTextContentControl pour chaque contrôle de texte enrichi natif présent dans le document. Pour exécuter ce code, ajoutez-le à la classe ThisDocument du projet et appelez la méthode CreateRichTextControlsFromNativeControls à partir du gestionnaire d'événements ThisDocument_Startup.
Private richTextControls As New System.Collections.Generic.List _ (Of Microsoft.Office.Tools.Word.RichTextContentControl) Private Sub CreateRichTextControlsFromNativeControls() If Me.ContentControls.Count <= 0 Then Return End If Dim count As Integer = 0 For Each nativeControl As Word.ContentControl In Me.ContentControls If nativeControl.Type = Word.WdContentControlType.wdContentControlRichText Then count += 1 Dim tempControl As Microsoft.Office.Tools.Word.RichTextContentControl = _ Me.Controls.AddRichTextContentControl(nativeControl, _ "VSTORichTextContentControl" + count.ToString()) richTextControls.Add(tempControl) End If Next nativeControl End Sub
private System.Collections.Generic.List <Microsoft.Office.Tools.Word.RichTextContentControl> richTextControls; private void CreateRichTextControlsFromNativeControls() { if (this.ContentControls.Count <= 0) return; richTextControls = new System.Collections.Generic.List <Microsoft.Office.Tools.Word.RichTextContentControl>(); int count = 0; foreach (Word.ContentControl nativeControl in this.ContentControls) { if (nativeControl.Type == Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlRichText) { count++; Microsoft.Office.Tools.Word.RichTextContentControl tempControl = this.Controls.AddRichTextContentControl(nativeControl, "VSTORichTextControl" + count.ToString()); richTextControls.Add(tempControl); } } }
Ajout de contrôles de contenu au moment de l'exécution dans un projet au niveau de l'application
Vous pouvez ajouter par programmation des contrôles de contenu à tout document ouvert au moment de l'exécution à l'aide d'un complément d'application. Pour ce faire, générez un élément hôte Document basé sur un document ouvert, puis utilisez des méthodes de la propriété Controls de cet élément hôte. Chaque méthode possède trois surcharges que vous pouvez utiliser pour ajouter un contrôle de contenu de l'une des manières suivantes :
Ajoutez un contrôle à la sélection actuelle.
Ajoutez un contrôle à une plage spécifiée.
Ajoutez un contrôle basé sur un contrôle de contenu natif dans le document.
Les contrôles de contenu créés dynamiquement ne sont pas conservés dans le document après sa fermeture. Toutefois, un contrôle de contenu natif reste dans le document. Vous pouvez recréer un contrôle de contenu basé sur un contrôle de contenu natif la prochaine fois que vous ouvrez le document. Pour plus d'informations, consultez Rendre des contrôles dynamiques persistants dans des documents Office.
Pour plus d'informations sur la génération d'éléments hôtes dans des projets au niveau de l'application, consultez Extension de documents Word et de classeurs Excel dans des compléments d'application au moment de l'exécution..
Notes
Pour ajouter un contrôle de contenu de case à cocher à un document d'un projet Word 2010, vous devez créer un objet ContentControl. Pour plus d'informations, consultez Contrôles de contenu.
Pour ajouter un contrôle de contenu à la sélection actuelle
Utilisez une méthode ControlCollection portant le nom Add<classe de contrôle> (où classe de contrôle est le nom de classe du contrôle de contenu que vous souhaitez ajouter, comme AddRichTextContentControl) et un paramètre unique pour le nom du nouveau contrôle.
L'exemple de code suivant utilise la méthode ControlCollection.AddRichTextContentControl(String) pour ajouter un nouveau RichTextContentControl au début du document actif. Pour exécuter ce code, ajoutez-le à la classe ThisAddIn du projet et appelez la méthode AddRichTextControlAtSelection à partir du gestionnaire d'événements ThisAddIn_Startup.
Dim richTextControl1 As Microsoft.Office.Tools.Word.RichTextContentControl Private Sub AddRichTextControlAtSelection() Dim currentDocument As Word.Document = Me.Application.ActiveDocument currentDocument.Paragraphs(1).Range.InsertParagraphBefore() currentDocument.Paragraphs(1).Range.Select() ' Use the following line of code in projects that target the .NET Framework 4. Dim extendedDocument As Document = Globals.Factory.GetVstoObject(currentDocument) ' In projects that target the .NET Framework 3.5, use the following line of code. ' Dim extendedDocument As Document = currentDocument.GetVstoObject() richTextControl1 = extendedDocument.Controls.AddRichTextContentControl("richTextControl1") richTextControl1.PlaceholderText = "Enter your first name" End Sub
private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl1; private void AddRichTextControlAtSelection() { Word.Document currentDocument = this.Application.ActiveDocument; currentDocument.Paragraphs[1].Range.InsertParagraphBefore(); currentDocument.Paragraphs[1].Range.Select(); // Use the following line of code in projects that target the .NET Framework 4. Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument); // In projects that target the .NET Framework 3.5, use the following line of code. // Document extendedDocument = currentDocument.GetVstoObject(); richTextControl1 = extendedDocument.Controls.AddRichTextContentControl("richTextControl1"); richTextControl1.PlaceholderText = "Enter your first name"; }
Pour ajouter un contrôle de contenu à une plage spécifiée
Utilisez une méthode ControlCollection qui porte le nom Add<classe de contrôle> (où classe de contrôle est le nom de la classe du contrôle de contenu à ajouter, comme AddRichTextContentControl) et possède un paramètre Microsoft.Office.Interop.Word.Range.
L'exemple de code suivant utilise la méthode ControlCollection.AddRichTextContentControl(Range, String) pour ajouter un nouveau RichTextContentControl au début du document actif. Pour exécuter ce code, ajoutez-le à la classe ThisAddIn du projet et appelez la méthode AddRichTextControlAtRange à partir du gestionnaire d'événements ThisAddIn_Startup.
Dim richTextControl2 As Microsoft.Office.Tools.Word.RichTextContentControl Private Sub AddRichTextControlAtRange() Dim currentDocument As Word.Document = Me.Application.ActiveDocument currentDocument.Paragraphs(1).Range.InsertParagraphBefore() ' Use the following line of code in projects that target the .NET Framework 4. Dim extendedDocument As Document = Globals.Factory.GetVstoObject(currentDocument) ' In projects that target the .NET Framework 3.5, use the following line of code. ' Dim extendedDocument As Document = currentDocument.GetVstoObject() richTextControl2 = extendedDocument.Controls.AddRichTextContentControl( _ extendedDocument.Paragraphs(1).Range, "richTextControl2") richTextControl2.PlaceholderText = "Enter your first name" End Sub
private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl2; private void AddRichTextControlAtRange() { Word.Document currentDocument = this.Application.ActiveDocument; currentDocument.Paragraphs[1].Range.InsertParagraphBefore(); // Use the following line of code in projects that target the .NET Framework 4. Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument); // In projects that target the .NET Framework 3.5, use the following line of code. // Document extendedDocument = currentDocument.GetVstoObject(); richTextControl2 = extendedDocument.Controls.AddRichTextContentControl( currentDocument.Paragraphs[1].Range, "richTextControl2"); richTextControl2.PlaceholderText = "Enter your first name"; }
Pour ajouter un contrôle de contenu basé sur un contrôle de contenu natif
Utilisez une méthode ControlCollection qui porte le nom Add<classe de contrôle> (où classe de contrôle est le nom de la classe du contrôle de contenu à ajouter, comme AddRichTextContentControl) et possède un paramètre Microsoft.Office.Interop.Word.ContentControl.
L'exemple de code suivant utilise la méthode ControlCollection.AddRichTextContentControl(ContentControl, String) pour créer un RichTextContentControl pour chaque contrôle de texte riche natif présent dans le document après son ouverture. Pour exécuter ce code, ajoutez le code à la classe ThisAddIn de votre projet.
Private richTextControls As New System.Collections.Generic.List _ (Of Microsoft.Office.Tools.Word.RichTextContentControl) Private Sub Application_DocumentOpen(ByVal Doc As Microsoft.Office.Interop.Word.Document) _ Handles Application.DocumentOpen If Doc.ContentControls.Count > 0 Then ' Use the following line of code in projects that target the .NET Framework 4. Dim extendedDocument As Document = Globals.Factory.GetVstoObject(Doc) ' In projects that target the .NET Framework 3.5, use the following line of code. ' Dim extendedDocument As Document = Doc.GetVstoObject() Dim count As Integer = 0 For Each nativeControl As Word.ContentControl In Doc.ContentControls If nativeControl.Type = Word.WdContentControlType.wdContentControlRichText Then count += 1 Dim tempControl As Microsoft.Office.Tools.Word.RichTextContentControl = _ extendedDocument.Controls.AddRichTextContentControl(nativeControl, _ "VSTORichTextContentControl" + count.ToString()) richTextControls.Add(tempControl) End If Next nativeControl End If End Sub
private System.Collections.Generic.List <Microsoft.Office.Tools.Word.RichTextContentControl> richTextControls; private void Application_DocumentOpen(Microsoft.Office.Interop.Word.Document Doc) { if (Doc.ContentControls.Count > 0) { // Use the following line of code in projects that target the .NET Framework 4. Document extendedDocument = Globals.Factory.GetVstoObject(Doc); // In projects that target the .NET Framework 3.5, use the following line of code. // Document extendedDocument = Doc.GetVstoObject(); richTextControls = new System.Collections.Generic.List <Microsoft.Office.Tools.Word.RichTextContentControl>(); int count = 0; foreach (Word.ContentControl nativeControl in Doc.ContentControls) { if (nativeControl.Type == Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlRichText) { count++; Microsoft.Office.Tools.Word.RichTextContentControl tempControl = extendedDocument.Controls.AddRichTextContentControl(nativeControl, "VSTORichTextControl" + count.ToString()); richTextControls.Add(tempControl); } } } }
En C#, vous devez également attacher le gestionnaire d'événements Application_DocumentOpen à l'événement DocumentOpen.
this.Application.DocumentOpen += new Word.ApplicationEvents4_DocumentOpenEventHandler(Application_DocumentOpen);
Voir aussi
Concepts
Automatisation de Word à l'aide d'objets étendus
Vue d'ensemble des éléments hôtes et des contrôles hôtes
Ajout de contrôles à des documents Office au moment de l'exécution
Limitations de programmation des éléments hôtes et des contrôles hôtes
Méthodes d'assistance pour les contrôles hôtes