Proteggere parti di documenti usando i controlli contenuto

Quando si protegge parte di un documento, si impedisce agli utenti di modificare o eliminare il contenuto in quella parte del documento. È possibile proteggere parti di un documento di Microsoft Office Word usando i controlli contenuto in diversi modi.

  • È possibile proteggere un controllo del contenuto.

  • È possibile proteggere una parte di un documento non presente in un controllo del contenuto.

    Si applica a: le informazioni contenute in questo argomento si applicano ai progetti a livello di documento e ai progetti di componente aggiuntivo VSTO per Word. Per altre informazioni, vedere Funzionalità disponibili per app Office lication e tipo di progetto.

Proteggere un controllo contenuto

È possibile impedire agli utenti di modificare o eliminare un controllo contenuto impostando le proprietà del controllo in un progetto a livello di documento in fase di progettazione o in fase di esecuzione.

È anche possibile proteggere i controlli del contenuto aggiunti a un documento in fase di esecuzione con un progetto di componente aggiuntivo VSTO. Per altre informazioni, vedere Procedura: Aggiungere controlli contenuto ai documenti di Word.

Per proteggere un controllo del contenuto in fase di progettazione

  1. Nel documento ospitato nella finestra di progettazione di Visual Studio selezionare il controllo contenuto da proteggere.

  2. Nella finestra Proprietà impostare una o entrambe le proprietà seguenti:

    • Per impedire agli utenti di modificare il controllo, impostare LockContents su True.

    • Per impedire agli utenti di eliminare il controllo, impostare LockContentControl su True.

  3. Fare clic su OK.

Per proteggere un controllo contenuto in fase di esecuzione

  1. Impostare la LockContents proprietà del controllo contenuto su true per impedire agli utenti di modificare il controllo e impostare la LockContentControl proprietà su true per impedire agli utenti di eliminare il controllo.

    L'esempio di codice seguente illustra l'uso delle proprietà LockContents e LockContentControl di due oggetti RichTextContentControl diversi in un progetto a livello di documento. Per eseguire il codice, aggiungerlo alla classe ThisDocument nel progetto e chiamare il metodo AddProtectedContentControls dal gestore eventi 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'esempio di codice seguente illustra l'uso delle proprietà LockContents e LockContentControl di due oggetti RichTextContentControl diversi in un progetto di componente aggiuntivo VSTO. Per eseguire il codice, aggiungerlo alla classe ThisAddIn nel progetto e chiamare il metodo AddProtectedContentControls dal gestore eventi 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;
    }
    

Proteggere una parte di un documento che non si trova in un controllo contenuto

È possibile impedire agli utenti di modificare un'area di un documento inserendo l'area in un controllo GroupContentControl. Questa operazione è utile negli scenari seguenti:

  • Si vuole proteggere un'area che non contiene i controlli del contenuto.

  • Si vuole proteggere un'area che contiene i controlli del contenuto, ma il testo o gli altri elementi da proteggere non sono nei controlli del contenuto.

Nota

Se si crea un oggetto GroupContentControl che include controlli contenuto incorporati, questi non vengono automaticamente protetti. Per impedire agli utenti di modificare un controllo contenuto incorporato, utilizzare la proprietà LockContents del controllo .

Per proteggere un'area di un documento in fase di progettazione

  1. Nel documento ospitato nella finestra di progettazione di Visual Studio selezionare l'area da proteggere.

  2. Sulla barra multifunzione fare clic sulla scheda Sviluppatore .

    Nota

    Se la scheda Sviluppatore non viene mostrata, è necessario abilitarne la visualizzazione. Per altre informazioni, vedere Procedura: Visualizzare la scheda sviluppatore sulla barra multifunzione.

  3. Nel gruppo Controlli fare clic sul pulsante a discesa Gruppo e quindi su Gruppo.

    L'oggetto GroupContentControl contenente l'area protetta viene automaticamente generato nella classe ThisDocument del progetto. Un bordo che rappresenta il controllo gruppo è visibile in fase di progettazione, ma non esiste alcun bordo visibile in fase di esecuzione.

Per proteggere un'area di un documento in fase di esecuzione

  1. Selezionare a livello di codice l'area da proteggere, quindi chiamare il metodo AddGroupContentControl per creare un oggetto GroupContentControl.

    L'esempio di codice seguente per un progetto a livello di documento aggiunge del testo al primo paragrafo del documento, seleziona il primo paragrafo e quindi crea un'istanza di GroupContentControl. Per eseguire il codice, aggiungerlo alla classe ThisDocument nel progetto e chiamare il metodo ProtectFirstParagraph dal gestore eventi 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'esempio di codice seguente per un progetto di componente aggiuntivo VSTO aggiunge del testo al primo paragrafo del documento attivo, seleziona il primo paragrafo e quindi crea un'istanza di GroupContentControl. Per eseguire il codice, aggiungerlo alla classe ThisAddIn nel progetto e chiamare il metodo ProtectFirstParagraph dal gestore eventi 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");
           }