Compartir a través de


Tutorial: Creación de una plantilla mediante controles de contenido

En este tutorial se muestra cómo crear una personalización de nivel de documento que usa controles de contenido para crear contenido estructurado y reutilizable en una plantilla de Microsoft Office Word.

Se aplica a: La información de este tema se aplica a proyectos de nivel de documento para Word. Para obtener más información, vea Características disponibles por aplicación de Office y tipo de proyecto.

Word le permite crear una colección de elementos de documento reutilizables, denominados bloques de creación. En este tutorial se muestra cómo crear dos tablas como bloques de creación. Cada tabla contiene varios controles de contenido que pueden contener diferentes tipos de contenido, como texto sin formato o fechas. Una de las tablas contiene información sobre un empleado y la otra tabla contiene comentarios de los clientes.

Después de crear un documento a partir de la plantilla, puede agregar cualquiera de las tablas al documento mediante varios BuildingBlockGalleryContentControl objetos, que muestran los bloques de creación disponibles en la plantilla.

En este tutorial se muestran las siguientes tareas:

  • Crear tablas que contengan controles de contenido en una plantilla de Word en tiempo de diseño.

  • Rellenar un control de contenido de cuadro combinado y un control de contenido de lista desplegable mediante programación.

  • Impedir que los usuarios editen una tabla especificada.

  • Agregar tablas a la colección de bloques de creación de una plantilla.

  • Crear un control de contenido que muestre los bloques de creación disponibles en la plantilla.

    Nota:

    El equipo puede mostrar nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las instrucciones siguientes. La edición de Visual Studio que tiene y la configuración que usa determinan estos elementos. Para obtener más información, consulte Personalizar el IDE.

Prerrequisitos

Necesitará los componentes siguientes para completar este tutorial:

Crear un nuevo proyecto de plantilla de Word

Cree una plantilla de Word para que los usuarios puedan crear sus propias copias fácilmente.

Para crear un proyecto de plantilla de Word

  1. Cree un proyecto de plantilla de Word con el nombre MyBuildingBlockTemplate. En el asistente, cree un nuevo documento en la solución. Para obtener más información, vea Cómo: Crear proyectos de Office en Visual Studio.

    Visual Studio abre la nueva plantilla de Word en el diseñador y agrega el proyecto MyBuildingBlockTemplate al Explorador de soluciones.

Cree la tabla de empleados

Cree una tabla que contenga cuatro tipos diferentes de controles de contenido en los que el usuario pueda escribir información sobre un empleado.

Para crear la tabla de empleados

  1. En la plantilla de Word hospedada en el diseñador de Visual Studio, en la cinta de opciones, haga clic en la pestaña Insertar .

  2. En el grupo Tablas , haga clic en Tabla e inserte una tabla con dos columnas y cuatro filas.

  3. Escriba texto en la primera columna para que se parezca a la columna siguiente:

    Nombre del empleado
    Fecha de contratación
    Título
    Imagen
  4. Haga clic en la primera celda de la segunda columna (junto a Nombre del empleado).

  5. En la cinta de opciones, haga clic en la pestaña Programador .

    Nota:

    Si la pestaña Programador no está visible, primero debe mostrarla. Para obtener más información, vea Cómo: Mostrar la pestaña programador en la cinta de opciones.

  6. En el grupo Controles , haga clic en el botón TextoPlainTextContentControl para agregar un PlainTextContentControl elemento a la primera celda.

  7. Haga clic en la segunda celda de la segunda columna (junto a Fecha de contratación).

  8. En el grupo Controles, haga clic en el botón Selector de fechaDatePickerContentControl para agregar un DatePickerContentControl a la segunda celda.

  9. Haga clic en la tercera celda de la segunda columna (junto a Título).

  10. En el grupo Controles , haga clic en el botón Cuadro combinadoComboBoxContentControl para agregar un ComboBoxContentControl elemento a la tercera celda.

  11. Haga clic en la última celda de la segunda columna (junto a Imagen).

  12. En el grupo Controles, haga clic en el botón Imagen Control de ContenidoPictureContentControl para agregar un PictureContentControl a la última celda.

Creación de la tabla de comentarios del cliente

Cree una tabla que contenga tres tipos diferentes de controles de contenido en los que el usuario puede escribir información de comentarios de los clientes.

Para crear la tabla de comentarios del cliente

  1. En la plantilla de Word, haga clic en la línea después de la tabla employee que agregó anteriormente y presione Entrar para agregar un nuevo párrafo.

  2. En la cinta de opciones, haga clic en la pestaña Insertar .

  3. En el grupo Tablas , haga clic en Tabla e inserte una tabla con dos columnas y tres filas.

  4. Escriba texto en la primera columna para que se parezca a la columna siguiente:

    Nombre del cliente
    Clasificación de satisfacción
    Comentarios
  5. Haga clic en la primera celda de la segunda columna (junto a Nombre del cliente).

  6. En la cinta de opciones, haga clic en la pestaña Programador .

  7. En el grupo Controles , haga clic en el botón TextoPlainTextContentControl para agregar un PlainTextContentControl elemento a la primera celda.

  8. Haga clic en la segunda celda de la segunda columna (junto a Clasificación de satisfacción).

  9. En el grupo Controles , haga clic en el botón Lista deDrop-DownDropDownListContentControl para agregar un DropDownListContentControl elemento a la segunda celda.

  10. Haga clic en la última celda de la segunda columna (junto a Comentarios).

  11. En el grupo Controles , haga clic en el botón Texto enriquecidoRichTextContentControl para agregar un RichTextContentControl elemento a la última celda.

Rellenar el cuadro combinado y la lista desplegable mediante programación

Puede inicializar controles de contenido en tiempo de diseño mediante la ventana Propiedades de Visual Studio. También puede inicializarlos en tiempo de ejecución, lo que le permite establecer sus estados iniciales dinámicamente. Para este tutorial, use código para rellenar las entradas en ComboBoxContentControl y DropDownListContentControl en tiempo de ejecución para que pueda ver cómo funcionan estos objetos.

Para modificar la interfaz de usuario de los controles de contenido mediante programación

  1. En el Explorador de soluciones, haga clic con el botón derecho en ThisDocument.cs o ThisDocument.vb y, a continuación, haga clic en Ver código.

  2. Agregue el código siguiente a la ThisDocument clase . Este código declara varios objetos que usará más adelante en este tutorial.

    private Microsoft.Office.Tools.Word.GroupContentControl groupControl1;
    private Microsoft.Office.Tools.Word.BuildingBlockGalleryContentControl buildingBlockControl1;
    private Microsoft.Office.Tools.Word.BuildingBlockGalleryContentControl buildingBlockControl2;
    
  3. Agregue el código siguiente al ThisDocument_Startup método de la ThisDocument clase . Este código agrega entradas a ComboBoxContentControl y DropDownListContentControl en las tablas y establece el texto del marcador de posición que se muestra en cada uno de estos controles antes de que el usuario los edite.

    comboBoxContentControl1.PlaceholderText = "Choose a title, or enter your own";
    comboBoxContentControl1.DropDownListEntries.Add("Engineer", "Engineer", 0);
    comboBoxContentControl1.DropDownListEntries.Add("Designer", "Designer", 1);
    comboBoxContentControl1.DropDownListEntries.Add("Manager", "Manager", 2);
    
    dropDownListContentControl1.PlaceholderText =
        "Choose a rating (1 lowest, 3 highest)";
    dropDownListContentControl1.DropDownListEntries.Add("1", "1", 0);
    dropDownListContentControl1.DropDownListEntries.Add("2", "2", 1);
    dropDownListContentControl1.DropDownListEntries.Add("3", "3", 2);
    

Impedir que los usuarios editen la tabla de empleados

Utiliza el GroupContentControl objeto que declaraste anteriormente para proteger la tabla de empleados. Después de proteger la tabla, los usuarios todavía pueden editar los controles de contenido de la tabla. Sin embargo, no pueden editar texto en la primera columna ni modificar la tabla de otras maneras, como agregar o eliminar filas y columnas. Para obtener más información sobre cómo usar un GroupContentControl para proteger una parte de un documento, vea Controles de contenido.

Para evitar que los usuarios editen la tabla de empleados

  1. Agregue el código siguiente al ThisDocument_Startup método de la ThisDocument clase , después del código que agregó en el paso anterior. Este código impide que los usuarios editen la tabla employee colocando la tabla dentro del GroupContentControl objeto que declaró anteriormente.

    this.Tables[1].Range.Select();
    groupControl1 = this.Controls.AddGroupContentControl("groupControl1");
    

Agrega las tablas a la colección de bloques de construcción

Agregue las tablas a una colección de bloques de creación de documentos en la plantilla para que los usuarios puedan insertar las tablas que ha creado en el documento. Para obtener más información sobre los bloques de creación de documentos, consulte Controles de contenido.

Para agregar las tablas a los bloques de creación de la plantilla

  1. Agregue el código siguiente al ThisDocument_Startup método de la ThisDocument clase , después del código que agregó en el paso anterior. Este código agrega nuevos bloques de creación que contienen las tablas a la colección Microsoft.Office.Interop.Word.BuildingBlockEntries, que contiene todos los bloques de creación reutilizables de la plantilla. Los nuevos bloques de creación se definen en una nueva categoría denominada Información de Empleados y Clientes y se les asigna el tipo de bloque Microsoft.Office.Interop.Word.WdBuildingBlockTypes.wdTypeCustom1.

    Word.Template template1 = this.AttachedTemplate as Word.Template;
    
    if (template1 != null)
    {
        object description = null;
        template1.BuildingBlockEntries.Add("Employee Table",
            Word.WdBuildingBlockTypes.wdTypeCustom1, "Employee and Customer Information",
            this.Tables[1].Range, ref description, Word.WdDocPartInsertOptions.wdInsertContent);
        template1.BuildingBlockEntries.Add("Customer Table",
            Word.WdBuildingBlockTypes.wdTypeCustom1, "Employee and Customer Information",
            this.Tables[2].Range, ref description, Word.WdDocPartInsertOptions.wdInsertContent);
    }
    
  2. Agregue el código siguiente al ThisDocument_Startup método de la ThisDocument clase , después del código que agregó en el paso anterior. Este código elimina las tablas de la plantilla. Las tablas ya no son necesarias, ya que las ha agregado a la galería de bloques de creación reutilizables de la plantilla. El código coloca primero el documento en modo de diseño para que se pueda eliminar la tabla de empleados protegida.

    if (!this.FormsDesign)
    {
        this.ToggleFormsDesign();
    }
    this.Tables[2].Delete();
    this.Tables[1].Delete();
    this.ToggleFormsDesign();
    

Crear un control de contenido que muestre los bloques de creación

Cree un control de contenido que proporcione acceso a los bloques de creación (es decir, las tablas) que creó anteriormente. Los usuarios pueden hacer clic en este control para agregar las tablas al documento.

Para crear un control de contenido que muestre los bloques de creación

  1. Agregue el código siguiente al ThisDocument_Startup método de la ThisDocument clase , después del código que agregó en el paso anterior. Este código inicializa el BuildingBlockGalleryContentControl objeto que declaró anteriormente. BuildingBlockGalleryContentControl muestra todos los bloques de construcción definidos en la categoría Información de Empleados y Clientes y que tienen el tipo Microsoft.Office.Interop.Word.WdBuildingBlockTypes.wdTypeCustom1.

    buildingBlockControl1 = this.Controls.AddBuildingBlockGalleryContentControl(
        this.Paragraphs[1].Range, "buildingBlockControl1");
    buildingBlockControl1.BuildingBlockCategory = "Employee and Customer Information";
    buildingBlockControl1.BuildingBlockType = Word.WdBuildingBlockTypes.wdTypeCustom1;
    buildingBlockControl1.PlaceholderText = "Choose your first building block";
    
    buildingBlockControl2 = this.Controls.AddBuildingBlockGalleryContentControl(
        this.Paragraphs[2].Range, "buildingBlockControl2");
    buildingBlockControl2.BuildingBlockCategory = "Employee and Customer Information";
    buildingBlockControl2.BuildingBlockType = Word.WdBuildingBlockTypes.wdTypeCustom1;
    buildingBlockControl2.PlaceholderText = "Choose your second building block";
    

Prueba del proyecto

Los usuarios pueden hacer clic en los controles de la galería de componentes del documento para insertar la tabla de empleados o la tabla de comentarios de clientes. Los usuarios pueden escribir o seleccionar respuestas en los controles de contenido de ambas tablas. Los usuarios pueden modificar otras partes de la tabla de comentarios del cliente, pero no deberían poder modificar otras partes de la tabla de empleados.

Para probar la tabla employee

  1. Presione F5 para ejecutar el proyecto.

  2. Haga clic en Elegir el primer bloque constructivo para mostrar el primer control de contenido de la galería de bloques constructivos.

  3. Haga clic en la flecha desplegable situada junto al encabezado Galería personalizada 1 del control y seleccione Tabla de empleados.

  4. Haga clic en la celda situada a la derecha de la celda Nombre del empleado y escriba un nombre.

    Compruebe que solo puede agregar texto a esta celda. Permite PlainTextContentControl a los usuarios agregar solo texto, no otros tipos de contenido, como el arte o una tabla.

  5. Haga clic en la celda situada a la derecha de la celda Fecha de contratación y seleccione una fecha en el selector de fechas.

  6. Haga clic en la celda situada a la derecha de la celda Título y seleccione uno de los títulos de trabajo en el cuadro combinado.

    Opcionalmente, escriba el nombre de un puesto que no está en la lista. Esto es posible porque permite ComboBoxContentControl a los usuarios seleccionar entre una lista de entradas o escribir sus propias entradas.

  7. Haga clic en el icono de la celda situada a la derecha de la celda Imagen y vaya a una imagen para mostrarla.

  8. Intente agregar filas o columnas a la tabla e intente eliminar filas y columnas de la tabla. Compruebe que no puede modificar la tabla. GroupContentControl le impide realizar modificaciones.

Para probar la tabla de comentarios del cliente

  1. Haga clic en Elegir el segundo bloque de creación para mostrar el segundo control de contenido de la galería de bloques de creación.

  2. Haga clic en la flecha desplegable situada junto al encabezado Galería personalizada 1 del control y seleccione Tabla de clientes.

  3. Haga clic en la celda situada a la derecha de la celda Customer Name (Nombre del cliente ) y escriba un nombre.

  4. Haga clic en la celda situada a la derecha de la celda Clasificación de satisfacción y seleccione una de las opciones disponibles.

    Compruebe que no puede escribir su propia entrada. Permite DropDownListContentControl que los usuarios solo seleccionen de una lista de entradas.

  5. Haga clic en la celda situada a la derecha de la celda Comentarios y escriba algunos comentarios.

    Opcionalmente, agregue algún contenido que no sea texto, como el arte o una tabla insertada. Esto es posible porque RichTextContentControl permite a los usuarios agregar contenido distinto del texto.

  6. Compruebe que puede agregar filas o columnas a la tabla y que puede eliminar filas y columnas de la tabla. Esto es posible porque usted no ha protegido la tabla al ponerla en un GroupContentControl.

  7. Cierre la plantilla.

Pasos siguientes

Puede obtener más información sobre cómo usar controles de contenido de este tema: