Partager via


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 2013 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 :

[!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.

Pour ajouter un contrôle de contenu à un document en utilisant la Boîte à outils

  1. 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.

  2. Ouvrez la Boîte à outils et cliquez sur l'onglet Contrôles Word.

  3. 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.

[!REMARQUE]

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.

[!REMARQUE]

Visual Studio ne fournit pas un contrôle de contenu de case à cocher dans la boîte à outils pour Word 2013 et 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

  1. 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.

  2. 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.

  3. 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.

[!REMARQUE]

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..

[!REMARQUE]

Pour ajouter un contrôle de contenu de case à cocher à un document dans Word 2013 ou un projet Word 2010, vous devez créer un objet d' 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()
    
        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é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()
    
        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 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
    
            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.

    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

Autres ressources

Programmation de compléments d'application

Programmation de personnalisations au niveau du document