Partager via


Comment : protéger des parties de documents à l'aide de contrôles de contenu

Mise à jour : Juillet 2008

S'applique à

Les informations de cette rubrique s'appliquent uniquement aux projets Visual Studio Tools pour Office et versions de Microsoft Office spécifiés.

Type de projet

  • Projets au niveau du document

  • Projets au niveau de l'application

Version de Microsoft Office

  • Word 2007

Pour plus d'informations, consultez Fonctionnalités disponibles par type d'application et de projet.

Lorsque 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 pour protéger des parties d'un document Microsoft Office Word 2007 à 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 n'est pas dans un contrôle de contenu.

Protection d'un contrôle de contenu

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

À compter de Visual Studio 2008 Service Pack 1 (SP1), vous pouvez aussi protéger des contrôles de contenu que vous ajoutez à un document au moment de l'exécution en utilisant un projet au niveau de l'application. Pour plus d'informations, consultez Comment : ajouter des contrôles de contenu à des 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 à protéger.

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

    • Pour empêcher les utilisateurs de modifier le contrôle, affectez à LockContents la valeur True.

    • Pour empêcher les utilisateurs de supprimer le contrôle, affectez à LockContentControl la valeur True.

  3. Cliquez sur OK.

Pour protéger un contrôle de contenu au moment de l'exécution dans un projet au niveau du document

  • Affectez à la propriété LockContents du contrôle de contenu la valeur true pour empêcher les utilisateurs de modifier le contrôle, puis affectez à la propriété LockContentControl la valeur true pour empêcher les utilisateurs de supprimer le contrôle.

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

    Dim deletableControl As Microsoft.Office.Tools.Word.RichTextContentControl
    Dim editableControl As Microsoft.Office.Tools.Word.RichTextContentControl
    
    Private Sub AddProtectedContentControls()
        Me.Paragraphs(1).Range.InsertParagraphBefore()
        Dim range1 As Word.Range = Me.Paragraphs(1).Range
    
        deletableControl = Me.Controls.AddRichTextContentControl(range1, _
            "deletableControl")
        deletableControl.PlaceholderText = "You can delete this control, " & _
            "but you cannot edit it"
        deletableControl.LockContents = True
    
        range1.InsertParagraphAfter()
        Dim range2 As Word.Range = Me.Paragraphs(2).Range
    
        editableControl = Me.Controls.AddRichTextContentControl(range2, _
            "editableControl")
        editableControl.PlaceholderText = "You can edit this control, " & _
            "but you cannot delete it"
        editableControl.LockContentControl = True
    End Sub
    
    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;
    }
    

Pour protéger un contrôle de contenu au moment de l'exécution dans un projet d'application

  • Affectez à la propriété LockContents du contrôle de contenu la valeur true pour empêcher les utilisateurs de modifier le contrôle, puis affectez à la propriété LockContentControl la valeur true pour empêcher les utilisateurs de supprimer le contrôle.

    L'exemple de code suivant montre l'utilisation des propriétés LockContents et LockContentControl de deux objets RichTextContentControl différents dans un projet d'application. Pour exécuter ce code, ajoutez-le à la classe ThisAddIn du projet et appelez la méthode AddProtectedContentControls à partir du gestionnaire d'événements ThisAddIn_Startup.

    Dim deletableControl As Microsoft.Office.Tools.Word.RichTextContentControl
    Dim editableControl As Microsoft.Office.Tools.Word.RichTextContentControl
    
    Private Sub AddProtectedContentControls()
        Dim vstoDocument As Microsoft.Office.Tools.Word.Document = _
            Me.Application.ActiveDocument.GetVstoObject()
        vstoDocument.Paragraphs(1).Range.InsertParagraphBefore()
        Dim range1 As Word.Range = 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()
        Dim range2 As Word.Range = 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
    End Sub
    
    private Microsoft.Office.Tools.Word.RichTextContentControl deletableControl;
    private Microsoft.Office.Tools.Word.RichTextContentControl editableControl;
    
    private void AddProtectedContentControls()
    {
        Microsoft.Office.Tools.Word.Document vstoDocument = 
            this.Application.ActiveDocument.GetVstoObject();
        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;
    }
    

Protection d'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 un GroupContentControl. Cela s'avère utile dans les scénarios suivants :

  • 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 d'autres éléments que vous souhaitez protéger ne sont 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 à protéger.

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

    Remarque :

    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.

  3. Dans le groupe Contrôles, cliquez sur le bouton déroulant Groupe, puis cliquez sur Groupe.

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

Pour protéger une zone d'un document au moment de l'exécution dans un projet au niveau du document

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

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

    Dim groupControl1 As Microsoft.Office.Tools.Word.GroupContentControl
    
    Private Sub ProtectFirstParagraph()
        Me.Paragraphs(1).Range.InsertParagraphBefore()
        Dim range1 As Word.Range = Me.Paragraphs(1).Range
        range1.Text = "You cannot edit or change the formatting of text " & _
                "in this paragraph, because this paragraph is in a GroupContentControl."
        range1.Select()
    
        groupControl1 = Me.Controls.AddGroupContentControl("groupControl1")
    End Sub
    
    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");
    }
    

Pour protéger une zone d'un document au moment de l'exécution dans un projet d'application

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

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

    Dim groupControl1 As Microsoft.Office.Tools.Word.GroupContentControl
    
    Private Sub ProtectFirstParagraph()
        Dim vstoDocument As Microsoft.Office.Tools.Word.Document = _
            Me.Application.ActiveDocument.GetVstoObject()
        vstoDocument.Paragraphs(1).Range.InsertParagraphBefore()
    
        Dim range1 As Word.Range = vstoDocument.Paragraphs(1).Range
        range1.Text = "You cannot edit or change the formatting of text " & _
                "in this paragraph, because this paragraph is in a GroupContentControl."
        range1.Select()
    
        groupControl1 = vstoDocument.Controls.AddGroupContentControl("groupControl1")
    End Sub
    
    private Microsoft.Office.Tools.Word.GroupContentControl groupControl1;
    
    private void ProtectFirstParagraph()
    {
        Microsoft.Office.Tools.Word.Document vstoDocument =
            this.Application.ActiveDocument.GetVstoObject();
        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");
    }
    

Voir aussi

Tâches

Comment : ajouter des contrôles de contenu à des documents Word

Concepts

Contrôles de contenu

Vue d'ensemble des éléments hôtes et des contrôles hôtes

Limitations de programmation des éléments hôtes et des contrôles hôtes

Ajout de contrôles à des documents Office au moment de l'exécution

Méthodes d'assistance pour les contrôles hôtes

Autres ressources

Contrôles hôtes Word

Historique des modifications

Date

Historique

Raison

Juillet 2008

Procédures ajoutées pour les compléments d'application.

Modifications de fonctionnalités dans le SP1.