Comment : ajouter du contenu des contrôles à des documents WordHow to: Add Content controls to Word documents

Dans les projets Word au niveau du document, vous pouvez ajouter des contrôles de contenu au document dans votre projet au moment du design ou lors de l’exécution.In document-level Word projects, you can add content controls to the document in your project at design time or at runtime. Dans les projets de complément Word VSTO, vous pouvez ajouter des contrôles de contenu à tout document ouvert au moment de l’exécution.In Word VSTO Add-in projects, you can add content controls to any open document at runtime.

S’applique à : Les informations contenues dans cette rubrique s’appliquent aux projets de niveau document et aux projets de compléments VSTO pour Word.Applies to: The information in this topic applies to document-level projects and VSTO add-in projects for Word. Pour plus d’informations, consultez Fonctionnalités disponibles par type d’application et de projet Office.For more information, see Features Available by Office Application and Project Type.

Cette rubrique décrit les tâches suivantes :This topic describes the following tasks:

Ajouter du contenu au moment du design des contrôlesAdd Content controls at design time

Il existe plusieurs façons d'ajouter des contrôles de contenu au document dans un projet au niveau du document au moment du design :There are several ways to add content controls to the document in a document-level project at design time:

  • Ajoutez un contrôle de contenu à partir de l'onglet Contrôles Word de la Boîte à outils.Add a content control from the Word Controls tab of the Toolbox.

  • Ajoutez un contrôle de contenu à votre document de la même manière que vous ajoutez un contrôle de contenu natif dans Word.Add a content control to your document in the same manner you would add a native content control in Word.

  • Faites glisser le contrôle de contenu vers votre document à partir de la fenêtre Sources de données .Drag a content control to your document from the Data Sources window. Cela est utile quand vous souhaitez lier le contrôle aux données, une fois le contrôle créé.This is useful when you want to bind the control to data when the control is created. Pour plus d’informations, consultez Comment : remplir des documents avec des données à partir des objets et Comment : remplir des documents avec les données d’une base de données.For more information, see How to: Populate documents with data from objects and How to: Populate documents with data from a database.

    Note

    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.Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments.The Visual Studio edition that you have and the settings that you use determine these elements. Pour plus d'informations, consultez Personnalisation de l'IDE.For more information, see Personalizing the IDE.

Pour ajouter un contrôle de contenu à un document à l'aide de la boîte à outilsTo add a content control to a document by using the Toolbox

  1. Dans le document hébergé dans le concepteur Visual StudioVisual Studio , placez le curseur à l'endroit où vous souhaitez ajouter le contrôle de contenu, ou sélectionnez le texte que le contrôle de contenu doit remplacer.In the document that is hosted in the Visual StudioVisual Studio designer, put the cursor where you want to add the content control, or select the text that you want the content control to replace.

  2. Ouvrez la Boîte à outils , puis cliquez sur l'onglet Contrôles Word .Open the Toolbox and click the Word Controls tab.

  3. Ajoutez le contrôle en procédant de l'une des manières suivantes :Add the control one of the following ways:

    • Double-cliquez sur un contrôle de contenu dans la Boîte à outils.Double-click a content control in the Toolbox.

      ouor

    • Cliquez sur un contrôle de contenu dans le boîte à outils , puis appuyez sur la entrée clé.Click a content control in the Toolbox and then press the Enter key.

      ouor

    • Faites glisser un contrôle de contenu de la Boîte à outils vers le document.Drag a content control from the Toolbox to the document. Le contrôle de contenu est ajouté à la sélection actuelle dans le document, et non à l'emplacement correspondant au pointeur de souris.The content control is added at the current selection in the document, not at the location of the mouse pointer.

Note

Vous ne pouvez pas ajouter GroupContentControl à l'aide de la Boîte à outils.You cannot add a GroupContentControl by using the Toolbox. Vous pouvez uniquement ajouter un GroupContentControl dans Word, ou lors de l’exécution.You can only add a GroupContentControl in Word, or at runtime.

Note

Visual Studio ne fournit aucun contrôle de contenu de case à cocher dans la boîte à outils.Visual Studio does not provide a check box content control in the Toolbox. Pour ajouter un contrôle de contenu de case à cocher au document, vous devez créer un objet ContentControl par programmation.To add a check box content control to the document, you must create a ContentControl object programmatically. Pour plus d’informations, consultez contrôles de contenu.For more information, see Content controls.

Pour ajouter un contrôle de contenu à un document dans WordTo add a content control to a document in Word

  1. Dans le document hébergé dans le concepteur Visual StudioVisual Studio , placez le curseur à l'endroit où vous souhaitez ajouter le contrôle de contenu, ou sélectionnez le texte que le contrôle de contenu doit remplacer.In the document that is hosted in the Visual StudioVisual Studio designer, put the cursor where you want to add the content control, or select the text that you want the content control to replace.

  2. Dans le ruban, cliquez sur l'onglet Développeur .On the Ribbon, click the Developer tab.

    Note

    Si l'onglet Développeur n'est pas visible, vous devez tout d'abord l'afficher.If the Developer tab is not visible, you must first show it. Pour plus d’informations, consultez Comment : afficher l’onglet Développeur sur le ruban.For more information, see How to: Show the Developer tab on the Ribbon.

  3. Dans le groupe Contrôles , cliquez sur l'icône du contrôle de contenu à ajouter.In the Controls group, click the icon for the content control that you want to add.

Ajouter des contrôles de contenu lors de l’exécution dans un projet au niveau du documentAdd content controls at runtime in a document-level project

Vous pouvez ajouter les contrôles de contenu par programmation à votre document au moment de l’exécution à l’aide des méthodes de la Controls propriété de la ThisDocument classe dans votre projet.You can add content controls programmatically to your document at runtime by using methods of the Controls property of the ThisDocument class in your project. Chaque méthode possède trois surcharges qui vous permettent d'ajouter un contrôle de contenu comme suit :Each method has three overloads that you can use to add a content control in the following ways:

  • ajout d'un contrôle à la sélection actuelle ;Add a control at the current selection.

  • ajout d'un contrôle à une plage spécifique ;Add a control at a specified range.

  • ajout d'un contrôle basé sur un contrôle de contenu natif dans le document.Add a control that is based on a native content control in the document.

    Les contrôles de contenu créés de façon dynamique ne sont pas conservés dans le document quand ce dernier est fermé.Dynamically created content controls are not persisted in the document when the document is closed. Toutefois, un contrôle de contenu natif demeure dans le document.However, a native content control remains in the document. Vous pouvez recréer un contrôle de contenu basé sur un contrôle de contenu natif à la prochaine ouverture du document.You can recreate a content control that is based on a native content control the next time the document is opened. Pour plus d’informations, consultez ajouter des contrôles aux documents Office au moment de l’exécution.For more information, see Add controls to Office documents at runtime.

Note

Pour ajouter un contrôle de contenu de case à cocher à un document dans un projet Word 2010, vous devez créer un objet ContentControl .To add a check box content control to a document in a Word 2010 project, you must create a ContentControl object. Pour plus d’informations, consultez contrôles de contenu.For more information, see Content controls.

Pour ajouter un contrôle de contenu à la sélection actuelleTo add a content control at the current selection

  1. Utilisez un ControlCollection méthode portant le nom Add < classe contrôle> (où classe contrôle est le nom de classe du contrôle de contenu que vous souhaitez ajouter, par exemple AddRichTextContentControl), et qui comporte un paramètre unique pour le nom du nouveau contrôle.Use a ControlCollection method that has the name Add<control class> (where control class is the class name of the content control that you want to add, such as AddRichTextContentControl), and that has a single parameter for the name of the new control.

    L'exemple de code suivant utilise la méthode AddRichTextContentControl pour ajouter un nouveau RichTextContentControl au début du document.The following code example uses the AddRichTextContentControl method to add a new RichTextContentControl to the beginning of the document. Pour exécuter ce code, ajoutez-le à la classe ThisDocument dans votre projet, puis appelez la méthode AddRichTextControlAtSelection à partir du gestionnaire d'événements ThisDocument_Startup .To run this code, add the code to the ThisDocument class in your project, and call the AddRichTextControlAtSelection method from the ThisDocument_Startup event handler.

    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";
    }
    
    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
    

Pour ajouter un contrôle de contenu à une plage spécifiqueTo add a content control at a specified range

  1. Utilisez un ControlCollection méthode portant le nom Add < classe contrôle> (où classe contrôle est le nom de la classe de contrôle de contenu que vous souhaitez ajouter, par exemple AddRichTextContentControl), et qui comporte un Range paramètre.Use a ControlCollection method that has the name Add<control class> (where control class is the name of the content control class that you want to add, such as AddRichTextContentControl), and that has a Range parameter.

    L'exemple de code suivant utilise la méthode AddRichTextContentControl pour ajouter un nouveau RichTextContentControl au début du document.The following code example uses the AddRichTextContentControl method to add a new RichTextContentControl to the beginning of the document. Pour exécuter ce code, ajoutez-le à la classe ThisDocument dans votre projet, puis appelez la méthode AddRichTextControlAtRange à partir du gestionnaire d'événements ThisDocument_Startup .To run this code, add the code to the ThisDocument class in your project, and call the AddRichTextControlAtRange method from the ThisDocument_Startup event handler.

    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";
    }
    
    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
    

Pour ajouter un contrôle de contenu basé sur un contrôle de contenu natifTo add a content control that is based on a native content control

  1. Utilisez un ControlCollection méthode portant le nom Add < classe contrôle> (où classe contrôle est le nom de la classe de contrôle de contenu que vous souhaitez ajouter, par exemple AddRichTextContentControl), et qui comporte un Microsoft.Office.Interop.Word.ContentControl paramètre.Use a ControlCollection method that has the name Add<control class> (where control class is the name of the content control class that you want to add, such as AddRichTextContentControl), and that has a Microsoft.Office.Interop.Word.ContentControl parameter.

    L'exemple de code suivant utilise la méthode AddRichTextContentControl pour créer un RichTextContentControl pour chaque contrôle de texte enrichi natif présent dans le document.The following code example uses the AddRichTextContentControl method to create a new RichTextContentControl for every native rich text control that is in the document. Pour exécuter ce code, ajoutez-le à la classe ThisDocument dans votre projet, puis appelez la méthode CreateRichTextControlsFromNativeControls à partir du gestionnaire d'événements ThisDocument_Startup .To run this code, add the code to the ThisDocument class in your project, and call the CreateRichTextControlsFromNativeControls method from the ThisDocument_Startup event handler.

    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);
            }
        }
    }
    
    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
    

Ajouter des contrôles de contenu lors de l’exécution dans un projet de complément VSTOAdd content controls at runtime in a VSTO Add-in project

Vous pouvez ajouter des contrôles de contenu par programmation à tout document ouvert au moment de l’exécution en utilisant un composant logiciel complément VSTO.You can add content controls programmatically to any open document at runtime by using a VSTO Add-in. Pour ce faire, vous devez générer un élément hôte Document basé sur un document ouvert, puis utiliser les méthodes de la propriété Controls de cet élément hôte.To do this, generate a Document host item that is based on an open document, and then use methods of the Controls property of this host item. Chaque méthode possède trois surcharges qui vous permettent d'ajouter un contrôle de contenu comme suit :Each method has three overloads that you can use to add a content control in the following ways:

  • ajout d'un contrôle à la sélection actuelle ;Add a control at the current selection.

  • ajout d'un contrôle à une plage spécifique ;Add a control at a specified range.

  • ajout d'un contrôle basé sur un contrôle de contenu natif dans le document.Add a control that is based on a native content control in the document.

    Les contrôles de contenu créés de façon dynamique ne sont pas conservés dans le document quand ce dernier est fermé.Dynamically created content controls are not persisted in the document when the document is closed. Toutefois, un contrôle de contenu natif demeure dans le document.However, a native content control remains in the document. Vous pouvez recréer un contrôle de contenu basé sur un contrôle de contenu natif à la prochaine ouverture du document.You can recreate a content control that is based on a native content control the next time the document is opened. Pour plus d’informations, consultez conserver des contrôles dynamiques persistants dans des documents Office.For more information, see Persist dynamic controls in Office documents.

    Pour plus d’informations sur la génération d’éléments hôtes dans les projets de complément VSTO, consultez documents Word d’étendre et classeurs Excel dans des Compléments VSTO lors de l’exécution.For more information about generating host items in VSTO Add-in projects, see Extend Word documents and Excel workbooks in VSTO Add-ins at runtime.

Note

Pour ajouter un contrôle de contenu de case à cocher à un document, vous devez créer un objet ContentControl .To add a check box content control to a document, you must create a ContentControl object. Pour plus d’informations, consultez contrôles de contenu.For more information, see Content controls.

Pour ajouter un contrôle de contenu à la sélection actuelleTo add a content control at the current selection

  1. Utilisez un ControlCollection méthode portant le nom Add < classe contrôle> (où classe contrôle est le nom de classe du contrôle de contenu que vous souhaitez ajouter, par exemple AddRichTextContentControl), et qui comporte un paramètre unique pour le nom du nouveau contrôle.Use a ControlCollection method that has the name Add<control class> (where control class is the class name of the content control that you want to add, such as AddRichTextContentControl), and that has a single parameter for the name of the new control.

    L'exemple de code suivant utilise la méthode AddRichTextContentControl pour ajouter un nouveau RichTextContentControl au début du document actif.The following code example uses the AddRichTextContentControl method to add a new RichTextContentControl to the beginning of the active document. Pour exécuter ce code, ajoutez-le à la classe ThisAddIn dans votre projet, puis appelez la méthode AddRichTextControlAtSelection à partir du gestionnaire d'événements ThisAddIn_Startup .To run this code, add the code to the ThisAddIn class in your project, and call the AddRichTextControlAtSelection method from the ThisAddIn_Startup event handler.

    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()
    
        Dim extendedDocument As Document = Globals.Factory.GetVstoObject(currentDocument)
    
    
        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();
    
        Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument);
    
        richTextControl1 = extendedDocument.Controls.AddRichTextContentControl("richTextControl1");
        richTextControl1.PlaceholderText = "Enter your first name";
    }
    

Pour ajouter un contrôle de contenu à une plage spécifiqueTo add a content control at a specified range

  1. Utilisez un ControlCollection méthode portant le nom Add < classe contrôle> (où classe contrôle est le nom de la classe de contrôle de contenu que vous souhaitez ajouter, par exemple AddRichTextContentControl), et qui comporte un Range paramètre.Use a ControlCollection method that has the name Add<control class> (where control class is the name of the content control class that you want to add, such as AddRichTextContentControl), and that has a Range parameter.

    L'exemple de code suivant utilise la méthode AddRichTextContentControl pour ajouter un nouveau RichTextContentControl au début du document actif.The following code example uses the AddRichTextContentControl method to add a new RichTextContentControl to the beginning of the active document. Pour exécuter ce code, ajoutez-le à la classe ThisAddIn dans votre projet, puis appelez la méthode AddRichTextControlAtRange à partir du gestionnaire d'événements ThisAddIn_Startup .To run this code, add the code to the ThisAddIn class in your project, and call the AddRichTextControlAtRange method from the ThisAddIn_Startup event handler.

    Dim richTextControl2 As Microsoft.Office.Tools.Word.RichTextContentControl
    
    Private Sub AddRichTextControlAtRange()
        Dim currentDocument As Word.Document = Me.Application.ActiveDocument
        currentDocument.Paragraphs(1).Range.InsertParagraphBefore()
    
        Dim extendedDocument As Document = Globals.Factory.GetVstoObject(currentDocument)
    
        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();
    
        Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument);
    
        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 natifTo add a content control that is based on a native content control

  1. Utilisez un ControlCollection méthode portant le nom Add < classe contrôle> (où classe contrôle est le nom de la classe de contrôle de contenu que vous souhaitez ajouter, par exemple AddRichTextContentControl), et qui comporte un Microsoft.Office.Interop.Word.ContentControl paramètre.Use a ControlCollection method that has the name Add<control class> (where control class is the name of the content control class that you want to add, such as AddRichTextContentControl), and that has a Microsoft.Office.Interop.Word.ContentControl parameter.

    L'exemple de code suivant utilise la méthode AddRichTextContentControl pour créer un RichTextContentControl pour chaque contrôle de texte enrichi natif présent dans un document, une fois ce dernier ouvert.The following code example uses the AddRichTextContentControl method to create a new RichTextContentControl for every native rich text control that is in a document, after the document is opened. Pour exécuter ce code, ajoutez-le à la classe ThisAddIn dans votre projet.To run this code, add the code to the ThisAddIn class in your project.

    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
    
            Dim extendedDocument As Document = Globals.Factory.GetVstoObject(Doc)
    
            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)
        {
            Document extendedDocument = Globals.Factory.GetVstoObject(Doc);
    
            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 .For C#, you must also attach the Application_DocumentOpen event handler to the DocumentOpen event.

    this.Application.DocumentOpen +=
        new Word.ApplicationEvents4_DocumentOpenEventHandler(Application_DocumentOpen);
    

Voir aussiSee also

Automatisation de Word à l’aide d’objets étendus Automate Word by using extended objects
Éléments hôtes et vue d’ensemble des contrôles hôtes Host items and host controls overview
Ajouter des contrôles aux documents Office au moment de l’exécution Add controls to Office documents at runtime
Limitations de programmation des éléments hôtes et des contrôles hôtes Programmatic limitations of host items and host controls
Programmation de compléments VSTO Program VSTO Add-ins
Programmation de personnalisations au niveau du documentProgram document-level customizations