Condividi tramite


Procedura: proteggere parti di documenti mediante i controlli del contenuto

Quando si protegge parte di un documento, si impedisce agli utenti di modificare o eliminare il contenuto in quella parte del documento. Sono disponibili vari modi per proteggere parti di un documento di Microsoft Office Word utilizzando i controlli del contenuto.

  • È 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 fornite in questo argomento sono valide per i progetti a livello di documento e di applicazione per Word 2007 e Word 2010. Per ulteriori informazioni, vedere Funzionalità disponibili in base ai tipi di progetto e applicazioni di Office.

Protezione di un controllo del contenuto

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

È inoltre possibile proteggere i controlli del contenuto aggiunti a un documento in fase di esecuzione mediante un progetto a livello di applicazione. Per ulteriori informazioni, vedere Procedura: aggiungere controlli del contenuto ai documenti di Word.

Per proteggere un controllo del contenuto in fase di progettazione

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

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

    • 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. Scegliere OK.

Per proteggere un controllo del contenuto in fase di esecuzione

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

    Nell'esempio di codice seguente viene illustrato l'utilizzo delle proprietà LockContents e LockContentControl di due oggetti RichTextContentControl diversi in un progetto a livello di documento. Per eseguire il codice, aggiungere il codice alla classe ThisDocument nel progetto e chiamare il metodo AddProtectedContentControls dal gestore eventi 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;
    }
    

    Nell'esempio di codice seguente viene illustrato l'utilizzo delle proprietà LockContents e LockContentControl di due oggetti RichTextContentControl diversi in un progetto a livello di applicazione. Per eseguire questo codice è necessario aggiungerlo alla classe ThisAddIn del progetto e quindi chiamare il metodo AddProtectedContentControls dal gestore eventi ThisAddIn_Startup.

    Dim deletableControl As Microsoft.Office.Tools.Word.RichTextContentControl
    Dim editableControl As Microsoft.Office.Tools.Word.RichTextContentControl
    
    Private Sub AddProtectedContentControls()
        ' Use the following line of code in projects that target the .NET Framework 4.
        Dim VstoDocument As Microsoft.Office.Tools.Word.Document = _
            Globals.Factory.GetVstoObject(Me.Application.ActiveDocument)
    
        ' In projects that target the .NET Framework 3.5, use the following line of code.
        ' 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()
    {
        // Use the following line of code in projects that target the .NET Framework 4.
        Microsoft.Office.Tools.Word.Document vstoDocument = 
            Globals.Factory.GetVstoObject(this.Application.ActiveDocument);
    
        // In projects that target the .NET Framework 3.5, use the following line of code.
        // 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;
    }
    

Protezione di una parte di un documento non presente in un controllo del 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 desidera proteggere un'area che non contiene i controlli del contenuto.

  • Si desidera 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 controllo GroupContentControl contenente controlli del contenuto incorporati, i controlli del contenuto incorporati non sono protetti automaticamente. Per impedire agli utenti di modificare un controllo del contenuto incorporato, utilizzare la proprietà LockContents del controllo.

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

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

  2. Sulla barra multifunzione, fare clic sulla scheda Sviluppatore.

    Nota

    Se la scheda Sviluppatore non è visibile, è necessario prima visualizzarla. Per ulteriori informazioni, vedere Procedura: visualizzare la scheda Sviluppo nella barra multifunzione.

  3. Nel gruppo Controlli, fare clic sul pulsante a discesa Gruppo e scegliere Gruppo.

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

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

  • Selezionare a livello di codice l'area da proteggere e quindi chiamare il metodo AddGroupContentControl per creare un controllo GroupContentControl.

    Nell'esempio di codice seguente per un progetto a livello di documento viene aggiunto testo al primo paragrafo del documento, viene selezionato il primo paragrafo, quindi viene creata l'istanza di un oggetto GroupContentControl. Per eseguire il codice, aggiungere il codice alla classe ThisDocument nel progetto e chiamare il metodo ProtectFirstParagraph dal gestore eventi 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");
    }
    

    Nell'esempio di codice seguente per un progetto a livello di applicazione viene aggiunto testo al primo paragrafo del documento attivo, viene selezionato il primo paragrafo, quindi viene creata l'istanza di un oggetto GroupContentControl. Per eseguire questo codice è necessario aggiungerlo alla classe ThisAddIn del progetto e chiamare il metodo ProtectFirstParagraph dal gestore eventi ThisAddIn_Startup.

    Dim groupControl1 As Microsoft.Office.Tools.Word.GroupContentControl
    
    Private Sub ProtectFirstParagraph()
        ' Use the following line of code in projects that target the .NET Framework 4.
        Dim VstoDocument As Microsoft.Office.Tools.Word.Document = _
            Globals.Factory.GetVstoObject(Me.Application.ActiveDocument)
    
        ' In projects that target the .NET Framework 3.5, use the following line of code.
        ' 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()
    {
        // Use the following line of code in projects that target the .NET Framework 4.
        Microsoft.Office.Tools.Word.Document vstoDocument =
            Globals.Factory.GetVstoObject(this.Application.ActiveDocument);
    
        // In projects that target the .NET Framework 3.5, use the following line of code.
        // 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");
    }
    

Vedere anche

Attività

Procedura: aggiungere controlli del contenuto ai documenti di Word

Concetti

Automazione di Word utilizzando oggetti estesi

Controlli del contenuto

Cenni preliminari sugli elementi e sui controlli host

Limitazioni a livello di codice degli elementi e dei controlli host

Aggiunta di controlli ai documenti di Office in fase di esecuzione

Metodi di supporto per i controlli host