Como: Proteger partes de documentos usando os controles de conteúdo

Quando você protege a parte de um documento, você impedir que os usuários alterem ou excluindo o conteúdo nessa parte do documento. Há várias maneiras de proteger partes de um documento do Word de Microsoft Office usando os controles de conteúdo:

  • Você pode proteger um controle de conteúdo.

  • Você pode proteger uma parte de um documento que não esteja em um controle de conteúdo.

Aplicável a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de nível de aplicativo para Word 2007 e Word 2010. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.

Protegendo um controle de conteúdo

Você pode impedir que os usuários editar ou excluir um controle de conteúdo, definindo propriedades do controle em um projeto de nível de documento em tempo de design ou em tempo de execução.

Você também pode proteger os controles de conteúdo que você adicionar a um documento em tempo de execução usando um projeto de nível de aplicativo. For more information, see Como: Adicionar controles de conteúdo para documentos do Word.

Para proteger um controle de conteúdo em tempo de design

  1. No documento que está hospedado na Visual Studio designer, selecione o controle de conteúdo que você deseja proteger.

  2. No Propriedades janela, defina uma ou ambas as seguintes propriedades:

    • Para impedir que os usuários o controle de edição, defina LockContents para True.

    • Para impedir que os usuários a exclusão do controle, defina LockContentControl para True.

  3. Click OK.

Para proteger um controle de conteúdo em tempo de execução

  • Definir o LockContents a propriedade do controle de conteúdo para true para impedir que os usuários o controle de edição e definir o LockContentControl propriedade para true to prevent users from a exclusão do controle.

    O exemplo de código a seguir demonstra o uso de LockContents e LockContentControl Propriedades de dois diferentes RichTextContentControl objetos em um projeto de nível de documento. Para executar esse código, adicione o código para o ThisDocument classe em seu projeto e a chamada a AddProtectedContentControls método a partir do ThisDocument_Startup manipulador de eventos.

    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;
    }
    

    O exemplo de código a seguir demonstra o uso de LockContents e LockContentControl Propriedades de dois diferentes RichTextContentControl objetos em um projeto de nível de aplicativo. Para executar esse código, adicione o código para o ThisAddIn classe em seu projeto e a chamada a AddProtectedContentControls método a partir do ThisAddIn_Startup manipulador de eventos.

    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;
    }
    

Protegendo uma parte de um documento que não esteja em um controle de conteúdo

Você pode impedir que usuários alterem uma área de um documento, colocando a área em um GroupContentControl. Isso é útil nas seguintes situações:

  • Você deseja proteger uma área que não contém controles de conteúdo.

  • Você deseja proteger uma área que já contém controles de conteúdo, mas o texto ou outros itens que você deseja proteger não estão em controles de conteúdo.

ObservaçãoObservação

Se você criar um GroupContentControl que contém os controles de conteúdo incorporados, os controles de conteúdo incorporados não serão automaticamente protegidos. Para impedir que usuários editem um controle de conteúdo incorporado, use o LockContents a propriedade do controle.

Para proteger uma área de um documento em tempo de design

  1. No documento que está hospedado na Visual Studio designer, selecione a área que você deseja proteger.

  2. Na faixa de opções, clique no Developer guia.

    ObservaçãoObservação

    Se o Developer guia não estiver visível, você deve primeiro mostrá-lo. For more information, see Como: Mostrar guia desenvolvedor na faixa de opções.

  3. No controles de grupo, clique no grupo botão suspenso e clique grupo.

    A GroupContentControl que contém o protegido região é gerada automaticamente na ThisDocument classe no projeto. Uma borda que representa o controle de grupo é visível em tempo de design, mas não há nenhuma borda visível em tempo de execução.

Para proteger uma área de um documento em tempo de execução

  • Programaticamente, selecione a área que você deseja proteger e, em seguida, chame o AddGroupContentControl método para criar um GroupContentControl.

    O exemplo de código a seguir para um projeto de nível de documento adiciona texto ao primeiro parágrafo no documento, seleciona o primeiro parágrafo e, em seguida, instancia um GroupContentControl. Para executar esse código, adicione o código para o ThisDocument classe em seu projeto e a chamada a ProtectFirstParagraph método a partir do ThisDocument_Startup manipulador de eventos.

    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");
    }
    

    O exemplo de código a seguir para um projeto de nível de aplicativo adiciona texto ao primeiro parágrafo do documento ativo, seleciona o primeiro parágrafo e, em seguida, instancia um GroupContentControl. Para executar esse código, adicione o código para o ThisAddIn classe em seu projeto e a chamada a ProtectFirstParagraph método a partir do ThisAddIn_Startup manipulador de eventos.

    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");
    }
    

Consulte também

Tarefas

Como: Adicionar controles de conteúdo para documentos do Word

Conceitos

Automatizar o Word usando o Extended objetos

Controles de conteúdo

Itens de host e a visão geral sobre controles de Host

Limitações de programação de itens de Host e controles de Host

Adicionar controles a documentos do Office em tempo de execução

Métodos auxiliares para controles de Host