Ajouter des contrôles de contenu aux 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 au moment de l'exécution. Dans les projets de complément Word VSTO, vous pouvez ajouter des contrôles de contenu à un document ouvert au moment de l'exécution.

S’applique à : les informations contenues dans cette rubrique s’appliquent aux projets au niveau du document et aux projets de complément VSTO pour Word. Pour plus d’informations, consultez Fonctionnalités disponibles par application Office lication et le type de projet.

Cette rubrique décrit les tâches suivantes :

Ajouter des contrôles de contenu au moment du design

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 :

  • 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 même manière que vous ajoutez un contrôle de contenu natif dans Word.

  • Faites glisser le contrôle de contenu vers votre document à partir de la fenêtre Sources de données . Cela est utile quand vous souhaitez lier le contrôle aux données, une fois le contrôle créé. Pour plus d’informations, consultez Procédure : remplir des documents à partir d’objets et Comment : remplir des documents à partir d’une base de données.

    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. 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 Personnaliser l’IDE.

Pour ajouter un contrôle de contenu à un document à l'aide de la boîte à outils

  1. Dans le document hébergé dans le concepteur Visual Studio, placez le curseur dans lequel vous souhaitez ajouter le contrôle de contenu, ou sélectionnez le texte que vous souhaitez remplacer par le contrôle de contenu.

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

  3. Ajoutez le contrôle en procédant de l'une des manières suivantes :

    • Double-cliquez sur un contrôle de contenu dans la Boîte à outils.

      or

    • Cliquez sur un contrôle de contenu dans la boîte à outils , puis appuyez sur la touche Entrée .

      or

    • 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, et non à l'emplacement correspondant au pointeur de souris.

Remarque

Vous ne pouvez pas ajouter GroupContentControl à l'aide de la Boîte à outils. Vous pouvez uniquement ajouter GroupContentControl dans Word, ou au moment de l'exécution.

Remarque

Visual Studio ne fournit aucun contrôle de contenu de case à cocher dans la boîte à outils. 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é dans le concepteur Visual Studio, placez le curseur dans lequel vous souhaitez ajouter le contrôle de contenu, ou sélectionnez le texte que vous souhaitez remplacer par le contrôle de contenu.

  2. Dans le ruban, cliquez sur l'onglet Développeur .

    Remarque

    Si l'onglet Développeur n'est pas visible, vous devez tout d'abord l'afficher. Pour plus d’informations, consultez Guide pratique pour afficher l’onglet Développeur du ruban.

  3. Dans le groupe Contrôles , cliquez sur l'icône du contrôle de contenu à ajouter.

Ajouter des contrôles de contenu au moment de l’exécution dans un projet au niveau du document

Vous pouvez ajouter des contrôles de contenu par programmation à votre document au moment de l'exécution en utilisant les méthodes de la propriété Controls de la classe ThisDocument dans votre projet. Chaque méthode possède trois surcharges qui vous permettent d'ajouter un contrôle de contenu comme suit :

  • ajout d'un contrôle à la sélection actuelle ;

  • ajout d'un contrôle à une plage spécifique ;

  • ajout d'un contrôle basé sur un contrôle de contenu natif dans le 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é. Toutefois, un contrôle de contenu natif demeure dans le document. Vous pouvez recréer un contrôle de contenu basé sur un contrôle de contenu natif à la prochaine ouverture du document. Pour plus d’informations, consultez Ajouter des contrôles à Bureau documents au moment de l’exécution.

Remarque

Pour ajouter un contrôle de contenu de case à cocher à un document dans 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

  1. Utilisez une ControlCollection méthode qui a la classe> de contrôle name<Add (où la classe de contrôle est le nom de classe du contrôle de contenu que vous souhaitez ajouter, par exempleAddRichTextContentControl), et qui a un paramètre unique pour le nom du nouveau contrôle.

    L'exemple de code suivant utilise la méthode AddRichTextContentControl pour ajouter un nouveau RichTextContentControl au début du 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 .

    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écifique

  1. Utilisez une ControlCollection méthode qui a la classe> de contrôle name<Add (où la classe de contrôle est le nom de la classe de contrôle de contenu que vous souhaitez ajouter, par exempleAddRichTextContentControl), et qui a un Range paramètre.

    L'exemple de code suivant utilise la méthode AddRichTextContentControl pour ajouter un nouveau RichTextContentControl au début du 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 .

    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

  1. Utilisez une ControlCollection méthode qui a la classe> de contrôle name<Add (où la classe de contrôle est le nom de la classe de contrôle de contenu que vous souhaitez ajouter, par exempleAddRichTextContentControl), et qui a un Microsoft.Office.Interop.Word.ContentControl paramètre.

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

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

Ajouter des contrôles de contenu au moment de l’exécution dans un projet de complément VSTO

Vous pouvez ajouter des contrôles de contenu par programmation à un document ouvert au moment de l'exécution en utilisant un complément VSTO. 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. Chaque méthode possède trois surcharges qui vous permettent d'ajouter un contrôle de contenu comme suit :

  • ajout d'un contrôle à la sélection actuelle ;

  • ajout d'un contrôle à une plage spécifique ;

  • ajout d'un contrôle basé sur un contrôle de contenu natif dans le 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é. Toutefois, un contrôle de contenu natif demeure dans le document. Vous pouvez recréer un contrôle de contenu basé sur un contrôle de contenu natif à la prochaine ouverture du document. Pour plus d’informations, consultez Conserver les contrôles dynamiques dans Bureau documents.

    Pour plus d’informations sur la génération d’éléments hôtes dans des projets de complément VSTO, consultez Étendre des documents Word et des classeurs Excel dans des compléments VSTO au moment de l’exécution.

Remarque

Pour ajouter un contrôle de contenu de case à cocher à un document, 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

  1. Utilisez une ControlCollection méthode qui a la classe> de contrôle name<Add (où la classe de contrôle est le nom de classe du contrôle de contenu que vous souhaitez ajouter, par exempleAddRichTextContentControl), et qui a un paramètre unique pour le nom du nouveau contrôle.

    L'exemple de code suivant utilise la méthode AddRichTextContentControl pour ajouter un nouveau RichTextContentControl au début du document actif. 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 .

    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écifique

  1. Utilisez une ControlCollection méthode qui a la classe> de contrôle name<Add (où la classe de contrôle est le nom de la classe de contrôle de contenu que vous souhaitez ajouter, par exempleAddRichTextContentControl), et qui a un Range paramètre.

    L'exemple de code suivant utilise la méthode AddRichTextContentControl pour ajouter un nouveau RichTextContentControl au début du document actif. 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 .

    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

  1. Utilisez une ControlCollection méthode qui a la classe> de contrôle name<Add (où la classe de contrôle est le nom de la classe de contrôle de contenu que vous souhaitez ajouter, par exempleAddRichTextContentControl), et qui a un Microsoft.Office.Interop.Word.ContentControl paramètre.

    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. Pour exécuter ce code, ajoutez-le à la classe ThisAddIn dans votre projet.

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