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 2013 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
Nel documento contenuto nella finestra di progettazione di Visual Studio, selezionare il controllo del contenuto da proteggere.
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.
Fare clic su 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() Dim VstoDocument As Microsoft.Office.Tools.Word.Document = _ Globals.Factory.GetVstoObject(Me.Application.ActiveDocument) 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 = 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; }
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 oggetto GroupContentControl che contiene controlli contenuto incorporati, i controlli contenuto incorporati non vengono 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
Nel documento contenuto nella finestra di progettazione Visual Studio, selezionare l'area da proteggere.
Sulla barra multifunzione, fare clic sulla scheda Sviluppo.
[!NOTA]
Se la scheda Sviluppo non è visibile, è necessario prima visualizzarla.Per ulteriori informazioni, vedere Procedura: visualizzare la scheda Sviluppo nella barra multifunzione.
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() Dim VstoDocument As Microsoft.Office.Tools.Word.Document = _ Globals.Factory.GetVstoObject(Me.Application.ActiveDocument) 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 = 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"); }
Vedere anche
Attività
Procedura: aggiungere controlli del contenuto ai documenti di Word
Concetti
Automazione di Word utilizzando oggetti estesi
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