Partilhar via


Proteger partes de documentos usando controles de conteúdo

Ao proteger parte de um documento, você impede que os usuários alterem ou excluam o conteúdo dessa parte do documento. Há várias maneiras de proteger partes de um documento do Microsoft Office Word usando 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.

    Aplica-se a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de suplemento VSTO para Word. Para obter mais informações, consulte Recursos disponíveis por aplicativo e tipo de projeto do Office.

Proteger um controle de conteúdo

Você pode impedir que os usuários editem ou excluam 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 controles de conteúdo que você adiciona a um documento em tempo de execução usando um projeto de suplemento VSTO. Para obter mais informações, consulte Como: Adicionar controles de conteúdo a documentos do Word.

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

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

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

    • Para impedir que os usuários editem o controle, defina LockContents como True.

    • Para impedir que os usuários excluam o controle, defina LockContentControl como True.

  3. Clique em OK.

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

  1. Defina a LockContents propriedade do controle de conteúdo como true para impedir que os usuários editem o controle e defina a LockContentControl propriedade como true para impedir que os usuários excluam o controle.

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

    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 LockContents uso das propriedades e LockContentControl de dois objetos diferentes RichTextContentControl em um projeto de suplemento VSTO. Para executar esse código, adicione o código à ThisAddIn classe em seu projeto e chame o AddProtectedContentControls ThisAddIn_Startup método do manipulador de eventos.

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

Proteger uma parte de um documento que não está em um controle de conteúdo

Você pode impedir que os usuários alterem uma área de um documento colocando a área em um GroupContentControlarquivo . Isso é útil nos seguintes cenários:

  • 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 nos controles de conteúdo.

Observação

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

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

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

  2. Na Faixa de Opções, clique na guia Desenvolvedor .

    Observação

    Se a guia Desenvolvedor não estiver visível, você deverá mostrá-la primeiro. Para obter mais informações, consulte Como mostrar a guia do desenvolvedor na faixa de opções.

  3. No grupo Controles, clique no botão suspenso Grupo e clique em Grupo.

    Um GroupContentControl que contém a região protegida é gerado automaticamente na ThisDocument classe em seu projeto. Uma borda que representa o controle de grupo é visível em tempo de design, mas não há borda visível em tempo de execução.

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

  1. Selecione programaticamente a área que você deseja proteger e, em seguida, chame o AddGroupContentControl método para criar um GroupContentControlarquivo .

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

    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 suplemento VSTO adiciona texto ao primeiro parágrafo do documento ativo, seleciona o primeiro parágrafo e instancia um GroupContentControlarquivo . Para executar esse código, adicione o código à ThisAddIn classe em seu projeto e chame o ProtectFirstParagraph ThisAddIn_Startup método do manipulador de eventos.

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