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
Versión de Microsoft Office
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
En el documento que se hospeda en el diseñador de Visual Studio, seleccione el control de contenido que desea proteger.
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.
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
En el documento que se hospeda en el diseñador de Visual Studio, seleccione el área que desea proteger.
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.
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
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
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. |