Protéger des parties de documents à l’aide de contrôles de contenu

Quand vous protégez une partie d'un document, vous empêchez les utilisateurs de modifier ou de supprimer le contenu dans cette partie du document. Il existe plusieurs manières de protéger des parties d'un document Microsoft Office Word à l'aide de contrôles de contenu :

  • Vous pouvez protéger un contrôle de contenu.

  • Vous pouvez protéger une partie d'un document qui ne se trouve pas dans un contrôle de contenu.

    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.

Protéger un contrôle de contenu

Vous pouvez empêcher les utilisateurs de modifier ou de supprimer un contrôle de contenu en définissant les propriétés du contrôle dans un projet au niveau du document au moment de la conception ou au moment de l’exécution.

Vous pouvez également protéger les contrôles de contenu que vous ajoutez à un document au moment de l'exécution à l'aide d'un projet de complément VSTO. Pour plus d’informations, consultez Guide pratique pour ajouter des contrôles de contenu aux documents Word.

Pour protéger un contrôle de contenu au moment du design

  1. Dans le document hébergé dans le concepteur Visual Studio, sélectionnez le contrôle de contenu que vous souhaitez protéger.

  2. Dans la fenêtre Propriétés , définissez une ou les deux propriétés suivantes :

    • Pour empêcher les utilisateurs de modifier le contrôle, définissez LockContents sur True.

    • Pour empêcher les utilisateurs de supprimer le contrôle, définissez LockContentControl sur True.

  3. Cliquez sur OK.

Pour protéger un contrôle de contenu au moment de l’exécution

  1. Définissez la LockContents propriété du contrôle de contenu sur true pour empêcher les utilisateurs de modifier le contrôle et définissez la LockContentControl propriété sur true pour empêcher les utilisateurs de supprimer le contrôle.

    L'exemple de code suivant illustre l'utilisation des propriétés LockContents et LockContentControl de deux objets RichTextContentControl distincts dans un projet au niveau du document. Pour exécuter ce code, ajoutez-le à la classe ThisDocument dans votre projet, puis appelez la méthode AddProtectedContentControls à partir du gestionnaire d'événements ThisDocument_Startup .

    private Microsoft.Office.Tools.Word.RichTextContentControl deletableControl;
    private Microsoft.Office.Tools.Word.RichTextContentControl editableControl;
    
    private void AddProtectedContentControls()
    {
        this.Paragraphs[1].Range.InsertParagraphBefore();
        Word.Range range1 = this.Paragraphs[1].Range;
    
        deletableControl = this.Controls.AddRichTextContentControl(range1,
            "deletableControl");
        deletableControl.PlaceholderText = "You can delete this control, " +
            "but you cannot edit it";
        deletableControl.LockContents = true;
    
        range1.InsertParagraphAfter();
        Word.Range range2 = this.Paragraphs[2].Range;
    
        editableControl = this.Controls.AddRichTextContentControl(range2,
            "editableControl");
        editableControl.PlaceholderText = "You can edit this control, " +
            "but you cannot delete it";
        editableControl.LockContentControl = true;
    }
    

    L’exemple de code suivant illustre l’utilisation des propriétés LockContents et LockContentControl de deux objets RichTextContentControl distincts dans un projet de complément VSTO. Pour exécuter ce code, ajoutez-le à la classe ThisAddIn dans votre projet, puis appelez la méthode AddProtectedContentControls à partir du gestionnaire d'événements ThisAddIn_Startup .

    private Microsoft.Office.Tools.Word.RichTextContentControl deletableControl;
    private Microsoft.Office.Tools.Word.RichTextContentControl editableControl;
    
    private void AddProtectedContentControls()
    {
        Microsoft.Office.Tools.Word.Document vstoDocument = 
            Globals.Factory.GetVstoObject(this.Application.ActiveDocument);
    
    
        vstoDocument.Paragraphs[1].Range.InsertParagraphBefore();
        Word.Range range1 = vstoDocument.Paragraphs[1].Range;
    
        deletableControl = vstoDocument.Controls.AddRichTextContentControl(range1,
            "deletableControl");
        deletableControl.PlaceholderText = "You can delete this control, " +
            "but you cannot edit it";
        deletableControl.LockContents = true;
    
        range1.InsertParagraphAfter();
        Word.Range range2 = vstoDocument.Paragraphs[2].Range;
    
        editableControl = vstoDocument.Controls.AddRichTextContentControl(range2,
            "editableControl");
        editableControl.PlaceholderText = "You can edit this control, " +
            "but you cannot delete it.";
        editableControl.LockContentControl = true;
    }
    

Protéger une partie d’un document qui n’est pas dans un contrôle de contenu

Vous pouvez empêcher les utilisateurs de modifier une zone d'un document en la plaçant dans GroupContentControl. Cela s'avère utile dans les scénarios suivant :

  • Vous souhaitez protéger une zone qui ne contient pas de contrôles de contenu.

  • Vous souhaitez protéger une zone qui contient déjà des contrôles de contenu, mais le texte ou les autres éléments que vous souhaitez protéger ne se trouvent pas dans les contrôles de contenu.

Remarque

Si vous créez un GroupContentControl qui contient des contrôles de contenu incorporés, ces contrôles ne sont pas protégés automatiquement. Pour empêcher les utilisateurs de modifier un contrôle de contenu incorporé, utilisez la propriété LockContents du contrôle.

Pour protéger une zone d'un document au moment du design

  1. Dans le document hébergé dans le concepteur Visual Studio, sélectionnez la zone que vous souhaitez protéger.

  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 le bouton déroulant Groupe , puis sur Groupe.

    Un GroupContentControl qui contient la zone protégée est généré automatiquement dans la classe ThisDocument de votre projet. Une bordure qui représente le contrôle de groupe est visible au moment du design, mais il n’existe aucune bordure visible au moment de l’exécution.

Pour protéger une zone d’un document au moment de l’exécution

  1. Sélectionnez par programmation la zone à protéger, puis appelez la méthode AddGroupContentControl pour créer GroupContentControl.

    L'exemple de code suivant pour un projet au niveau du document ajoute du texte au premier paragraphe du document, sélectionne le premier paragraphe, puis instancie GroupContentControl. Pour exécuter ce code, ajoutez-le à la classe ThisDocument dans votre projet, puis appelez la méthode ProtectFirstParagraph à partir du gestionnaire d'événements ThisDocument_Startup .

    private Microsoft.Office.Tools.Word.GroupContentControl groupControl1;
    
    private void ProtectFirstParagraph()
    {
        this.Paragraphs[1].Range.InsertParagraphBefore();
        Word.Range range1 = this.Paragraphs[1].Range;
    
        range1.Text = "You cannot edit or change the formatting of text " +
            "in this sentence, because this sentence is in a GroupContentControl.";
        range1.Select();
        groupControl1 = this.Controls.AddGroupContentControl("groupControl1");
    }
    

    L'exemple de code suivant pour un projet de complément VSTO ajoute du texte au premier paragraphe du document actif, sélectionne le premier paragraphe, puis instancie GroupContentControl. Pour exécuter ce code, ajoutez-le à la classe ThisAddIn dans votre projet, puis appelez la méthode ProtectFirstParagraph à partir du gestionnaire d'événements ThisAddIn_Startup .

           private Microsoft.Office.Tools.Word.GroupContentControl groupControl1;
    
           private void ProtectFirstParagraph()
           {
               Microsoft.Office.Tools.Word.Document vstoDocument =
                   Globals.Factory.GetVstoObject(this.Application.ActiveDocument);
    
    
               vstoDocument.Paragraphs[1].Range.InsertParagraphBefore();
    
               Word.Range range1 = vstoDocument.Paragraphs[1].Range;
               range1.Text = "You cannot edit or change the formatting of text " +
                   "in this sentence, because this sentence is in a GroupContentControl.";
               range1.Select();
    
               groupControl1 = vstoDocument.Controls.AddGroupContentControl("groupControl1");
           }