Compartir a través de


Cómo: Proteger elementos de documentos mediante controles de contenido

Actualización: Julio de 2008

Se aplica a

La información de este tema sólo se aplica a los proyectos y versiones especificados de Visual Studio Tools para Office de Microsoft Office.

Tipo de proyecto

  • Proyectos de nivel de documento

  • Proyectos de nivel de aplicación

Versión de Microsoft Office

  • Word 2007

Para obtener más información, consulte Características disponibles por aplicación y tipo de proyecto.

Al proteger un elemento de un documento, impide que los usuarios cambien o eliminen el contenido de dicho elemento. Existen varias maneras para proteger elementos de un documento de Microsoft Office Word 2007 mediante controles de contenido:

  • Puede proteger un control de contenido.

  • Puede proteger un elemento de un documento que no esté incluido en un control de contenido.

Proteger un control de contenido

Puede impedir que los usuarios modifiquen o eliminen un control de contenido estableciendo las propiedades del control en un proyecto en el nivel del documento en tiempo de diseño o de ejecución.

A partir de Visual Studio 2008 Service Pack 1 (SP1), también puede proteger los controles de contenido que agrega a un documento en tiempo de ejecución utilizando un proyecto en el nivel de la aplicación. Para obtener más información, vea Cómo: Agregar controles de contenido a documentos de Word.

Para proteger un control de contenido en tiempo de diseño

  1. En el documento que se hospeda en el diseñador de Visual Studio, seleccione el control de contenido que desea proteger.

  2. En la ventana Propiedades, establezca una o ambas de las propiedades siguientes:

    • Para evitar que los usuarios editen el control, establezca LockContents en True.

    • Para evitar que los usuarios eliminen el control, establezca LockContentControl en True.

  3. Haga clic en Aceptar.

Para proteger los controles de contenido en tiempo de ejecución en un proyecto en el nivel del documento

  • Establezca la propiedad LockContents del control de contenido en true para evitar que los usuarios editen el control y la propiedad LockContentControl en true para evitar que los usuarios lo eliminen.

    En el ejemplo de código siguiente se muestra el uso de las propiedades LockContents y LockContentControl de dos objetos RichTextContentControl diferentes en un proyecto en el nivel del documento. Para ejecutar este código, agregue el código a la clase ThisDocument del proyecto y llame al método AddProtectedContentControls desde el controlador de eventos 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;
    }
    

Para proteger los controles de contenido en tiempo de ejecución en un proyecto en el nivel de la aplicación

  • Establezca la propiedad LockContents del control de contenido en true para evitar que los usuarios editen el control y la propiedad LockContentControl en true para evitar que los usuarios lo eliminen.

    En el ejemplo de código siguiente se muestra el uso de las propiedades LockContents y LockContentControl de dos objetos RichTextContentControl diferentes en un proyecto en el nivel de la aplicación. Para ejecutar este código, agregue el código a la clase ThisAddIn del proyecto y llame al método AddProtectedContentControls desde el controlador de eventos 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 = _
            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()
    {
        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;
    }
    

Proteger un elemento de un documento que no está incluido en un control de contenido

Puede evitar que los usuarios cambien un área de un documento si incluye el área en un objeto GroupContentControl. Esto resulta útil en los escenarios siguientes:

  • Desea proteger un área que no contiene controles de contenido.

  • Desea proteger un área que ya contiene controles de contenido, pero el texto u otros elementos que desea proteger no están incluidos en los controles de contenido.

Nota:

Si crea un control GroupContentControl que contiene controles de contenido incrustados, estos controles de contenido incrustados no se protegerán automáticamente. Para evitar que los usuarios editen un control de contenido incrustado, utilice la propiedad LockContents del control.

Para proteger un área de un documento en tiempo de diseño

  1. En el documento que se hospeda en el diseñador de Visual Studio, seleccione el área que desea proteger.

  2. En la cinta de opciones, haga clic en la ficha Desarrollador.

    Nota:

    Si la ficha Desarrollador no está visible, debe mostrarla primero. Para obtener más información, consulte Cómo: Mostrar la ficha Programador en la cinta de opciones.

  3. En el grupo Controles, haga clic en el botón de lista desplegable Grupo y, a continuación, haga clic en Agrupar.

    En la clase ThisDocument del proyecto se genera automáticamente un objeto GroupContentControl que contiene la región protegida. Un borde que representa el control de grupo está visible en tiempo de diseño, pero en tiempo de ejecución no hay ningún borde visible.

Para proteger un área de un documento en un proyecto en el nivel del documento en tiempo de ejecución

  • Seleccione mediante programación el área que desea proteger y, a continuación, llame al método AddGroupContentControl para crear un objeto GroupContentControl.

    En el ejemplo de código siguiente se agrega texto al primer párrafo del documento, se selecciona el primer párrafo y, a continuación, se crea una instancia de un objeto GroupContentControl. Para ejecutar este código, agregue el código a la clase ThisDocument del proyecto y llame al método ProtectFirstParagraph desde el controlador de eventos 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");
    }
    

Para proteger un área de un documento en un proyecto en el nivel de la aplicación en tiempo de ejecución

  • Seleccione mediante programación el área que desea proteger y, a continuación, llame al método AddGroupContentControl para crear un objeto GroupContentControl.

    En el ejemplo de código siguiente se agrega texto al primer párrafo del documento activo, se selecciona el primer párrafo y, a continuación, se crea una instancia de un objeto GroupContentControl. Para ejecutar este código, agregue el código a la clase ThisAddIn del proyecto y llame al método ProtectFirstParagraph desde el controlador de eventos ThisAddIn_Startup.

    Dim groupControl1 As Microsoft.Office.Tools.Word.GroupContentControl
    
    Private Sub ProtectFirstParagraph()
        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()
    {
        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");
    }
    

Vea también

Tareas

Cómo: Agregar controles de contenido a documentos de Word

Conceptos

Controles de contenido

Información general sobre elementos y controles Host

Limitaciones de programación de elementos y controles Host

Agregar controles a documentos de Office en tiempo de ejecución

Métodos auxiliares para controles host

Otros recursos

Controles Host de Word

Historial de cambios

Fecha

Historial

Motivo

Julio de 2008

Agregados procedimientos para complementos en el nivel de la aplicación.

Cambio de características de SP1.