Agregar controles de contenido a documentos de Word

En proyectos de Word de nivel de documento, puede agregar controles de contenido al documento en el proyecto en tiempo de diseño o en tiempo de ejecución. En proyectos de complemento de VSTO de Word, puede agregar controles de contenido a cualquier documento abierto en tiempo de ejecución.

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

En este tema se describen las tareas siguientes:

Agregar controles de contenido en tiempo de diseño

Hay varias maneras de agregar controles de contenido al documento en un proyecto de nivel de documento en tiempo de diseño:

  • Agregar un control de contenido desde la pestaña Controles de Word del Cuadro de herramientas.

  • Agregar un control de contenido en el documento de la misma manera en que se agregaría un control de contenido nativo en Word.

  • Arrastrar un control de contenido a un documento desde la ventana Orígenes de datos . Esto es útil cuando se desea enlazar el control a los datos al crear el control. Para obtener más información, vea Cómo: Rellenar documentos con datos de objetos y Cómo: Rellenar documentos con datos de una base de datos.

    Nota:

    Es posible que tu equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las siguientes instrucciones. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos. Para obtener más información, vea Personalizar el IDE.

Para agregar un control de contenido a un documento mediante el cuadro de herramientas

  1. En el documento hospedado en el diseñador de Visual Studio, coloque el cursor donde desea agregar el control de contenido o seleccione el texto que desea que reemplace el control de contenido.

  2. Abra el Cuadro de herramientas y haga clic en la pestaña Controles de Word .

  3. Agregue el control de una de las siguientes formas:

    • Haga doble clic en un control de contenido en el Cuadro de herramientas.

      or

    • Haga clic en un control de contenido en el Cuadro de herramientas y presione la tecla Entrar .

      or

    • Arrastre el control de contenido del Cuadro de herramientas al documento. El control de contenido se agrega en la selección actual del documento, no en la ubicación del puntero del mouse.

Nota:

No se puede agregar un GroupContentControl mediante el Cuadro de herramientas. Solo se puede agregar un GroupContentControl en Word o en tiempo de ejecución.

Nota:

Visual Studio no proporciona un control de contenido de casilla en el cuadro de herramientas. Para agregar un control de contenido de casilla al documento, debe crear un objeto ContentControl mediante programación. Para obtener más información, vea Controles de contenido.

Para agregar un control de contenido a un documento en Word

  1. En el documento hospedado en el diseñador de Visual Studio, coloque el cursor donde desea agregar el control de contenido o seleccione el texto que desea que reemplace el control de contenido.

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

    Nota:

    Si la pestaña Desarrollador 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.

  3. En el grupo Controles , haga clic en el icono del control de contenido que desea agregar.

Agregar controles de contenido en tiempo de ejecución en un proyecto de nivel de documento

Puede agregar controles de contenido mediante programación al documento en tiempo de ejecución con métodos de la propiedad Controls de la clase ThisDocument en el proyecto. Cada método tiene tres sobrecargas que puede usar para agregar un control de contenido de las maneras siguientes:

  • Agregar un control en la selección actual.

  • Agregar un control en un intervalo especificado.

  • Agregar un control basado en un control de contenido nativo del documento.

    Los controles de contenido creados dinámicamente no se conservan en el documento cuando se cierra. Sin embargo, en el documento permanece un control de contenido nativo. Puede volver a crear un control de contenido basado en un control de contenido nativo la próxima vez que se abra el documento. Para obtener más información, vea Agregar controles a documentos de Office en tiempo de ejecución.

Nota:

Para agregar un control de contenido de casilla a un documento en un proyecto de Word 2010, debe crear un objeto ContentControl . Para obtener más información, vea Controles de contenido.

Para agregar un control de contenido en la selección actual

  1. Use un ControlCollection método que tenga la clase> de control name<Add (donde la clase de control es el nombre de clase del control de contenido que desea agregar, como AddRichTextContentControl), y que tiene un único parámetro para el nombre del nuevo control.

    El siguiente ejemplo de código usa el método AddRichTextContentControl para agregar un nuevo RichTextContentControl al principio del documento. Para ejecutar este código, agregue el código a la clase ThisDocument del proyecto y llame al método AddRichTextControlAtSelection desde el controlador de eventos ThisDocument_Startup .

    private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl1;
    
    private void AddRichTextControlAtSelection()
    {
        this.Paragraphs[1].Range.InsertParagraphBefore();
        this.Paragraphs[1].Range.Select();
    
        richTextControl1 = this.Controls.AddRichTextContentControl("richTextControl1");
        richTextControl1.PlaceholderText = "Enter your first name";
    }
    

Para agregar un control de contenido en un intervalo especificado

  1. Use un ControlCollection método que tenga la clase> de control name<Add (donde la clase de control es el nombre de la clase de control de contenido que desea agregar, como AddRichTextContentControl), y que tiene un Range parámetro .

    El siguiente ejemplo de código usa el método AddRichTextContentControl para agregar un nuevo RichTextContentControl al principio del documento. Para ejecutar este código, agregue el código a la clase ThisDocument del proyecto y llame al método AddRichTextControlAtRange desde el controlador de eventos ThisDocument_Startup .

    private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl2;
    
    private void AddRichTextControlAtRange()
    {
        this.Paragraphs[1].Range.InsertParagraphBefore();
    
        richTextControl2 = this.Controls.AddRichTextContentControl(this.Paragraphs[1].Range,
            "richTextControl2");
        richTextControl2.PlaceholderText = "Enter your first name";
    }
    

Para agregar un control de contenido basado en un control de contenido nativo

  1. Use un ControlCollection método que tenga la clase> de control name<Add (donde la clase de control es el nombre de la clase de control de contenido que desea agregar, como AddRichTextContentControl), y que tiene un Microsoft.Office.Interop.Word.ContentControl parámetro .

    El siguiente ejemplo de código usa el método AddRichTextContentControl para crear un nuevo RichTextContentControl para cada control de texto enriquecido nativo que contenga el documento. Para ejecutar este código, agregue el código a la clase ThisDocument del proyecto y llame al método CreateRichTextControlsFromNativeControls desde el controlador de eventos ThisDocument_Startup .

    private System.Collections.Generic.List
        <Microsoft.Office.Tools.Word.RichTextContentControl> richTextControls;
    
    private void CreateRichTextControlsFromNativeControls()
    {
        if (this.ContentControls.Count <= 0)
            return;
    
        richTextControls = new System.Collections.Generic.List
            <Microsoft.Office.Tools.Word.RichTextContentControl>();
        int count = 0;
    
        foreach (Word.ContentControl nativeControl in this.ContentControls)
        {
            if (nativeControl.Type ==
                Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlRichText)
            {
                count++;
                Microsoft.Office.Tools.Word.RichTextContentControl tempControl =
                    this.Controls.AddRichTextContentControl(nativeControl,
                    "VSTORichTextControl" + count.ToString());
                richTextControls.Add(tempControl);
            }
        }
    }
    

Agregar controles de contenido en tiempo de ejecución en un proyecto de complemento de VSTO

Puede agregar controles de contenido mediante programación a cualquier documento abierto en tiempo de ejecución a través de un complemento de VSTO. Para ello, genere un elemento host Document basado en un documento abierto y, a continuación, use métodos de la propiedad Controls de este elemento host. Cada método tiene tres sobrecargas que puede usar para agregar un control de contenido de las maneras siguientes:

  • Agregar un control en la selección actual.

  • Agregar un control en un intervalo especificado.

  • Agregar un control basado en un control de contenido nativo del documento.

    Los controles de contenido creados dinámicamente no se conservan en el documento cuando se cierra. Sin embargo, en el documento permanece un control de contenido nativo. Puede volver a crear un control de contenido basado en un control de contenido nativo la próxima vez que se abra el documento. Para obtener más información, vea Conservar controles dinámicos en documentos de Office.

    Para obtener más información sobre cómo generar elementos de host en proyectos de complemento de VSTO, vea Extender documentos de Word y libros de Excel en complementos de VSTO en tiempo de ejecución.

Nota:

Para agregar un control de contenido de casilla a un documento, debe crear un objeto ContentControl . Para obtener más información, vea Controles de contenido.

Para agregar un control de contenido en la selección actual

  1. Use un ControlCollection método que tenga la clase> de control name<Add (donde la clase de control es el nombre de clase del control de contenido que desea agregar, como AddRichTextContentControl), y que tiene un único parámetro para el nombre del nuevo control.

    El siguiente ejemplo de código usa el método AddRichTextContentControl para agregar un nuevo RichTextContentControl al principio del documento activo. Para ejecutar este código, agregue el código a la clase ThisAddIn del proyecto y llame al método AddRichTextControlAtSelection desde el controlador de eventos ThisAddIn_Startup .

    private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl1;
    
    private void AddRichTextControlAtSelection()
    {
        Word.Document currentDocument = this.Application.ActiveDocument;
        currentDocument.Paragraphs[1].Range.InsertParagraphBefore();
        currentDocument.Paragraphs[1].Range.Select();
    
        Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument);
    
        richTextControl1 = extendedDocument.Controls.AddRichTextContentControl("richTextControl1");
        richTextControl1.PlaceholderText = "Enter your first name";
    }
    

Para agregar un control de contenido en un intervalo especificado

  1. Use un ControlCollection método que tenga la clase> de control name<Add (donde la clase de control es el nombre de la clase de control de contenido que desea agregar, como AddRichTextContentControl), y que tiene un Range parámetro .

    El siguiente ejemplo de código usa el método AddRichTextContentControl para agregar un nuevo RichTextContentControl al principio del documento activo. Para ejecutar este código, agregue el código a la clase ThisAddIn del proyecto y llame al método AddRichTextControlAtRange desde el controlador de eventos ThisAddIn_Startup .

    private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl2;
    
    private void AddRichTextControlAtRange()
    {
        Word.Document currentDocument = this.Application.ActiveDocument;
        currentDocument.Paragraphs[1].Range.InsertParagraphBefore();
    
        Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument);
    
        richTextControl2 = extendedDocument.Controls.AddRichTextContentControl(
            currentDocument.Paragraphs[1].Range, "richTextControl2");
        richTextControl2.PlaceholderText = "Enter your first name";
    }
    

Para agregar un control de contenido basado en un control de contenido nativo

  1. Use un ControlCollection método que tenga la clase> de control name<Add (donde la clase de control es el nombre de la clase de control de contenido que desea agregar, como AddRichTextContentControl), y que tiene un Microsoft.Office.Interop.Word.ContentControl parámetro .

    El siguiente ejemplo de código usa el método AddRichTextContentControl para crear un nuevo RichTextContentControl para cada control de texto enriquecido nativo que contenga el documento, después de que se abra el documento. Para ejecutar este código, agregue el código para a la clase ThisAddIn del proyecto.

    private System.Collections.Generic.List
        <Microsoft.Office.Tools.Word.RichTextContentControl> richTextControls;
    
    private void Application_DocumentOpen(Microsoft.Office.Interop.Word.Document Doc)
    {
        if (Doc.ContentControls.Count > 0)
        {
            Document extendedDocument = Globals.Factory.GetVstoObject(Doc);
    
            richTextControls = new System.Collections.Generic.List
                <Microsoft.Office.Tools.Word.RichTextContentControl>();
            int count = 0;
    
            foreach (Word.ContentControl nativeControl in Doc.ContentControls)
            {
                if (nativeControl.Type ==
                    Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlRichText)
                {
                    count++;
                    Microsoft.Office.Tools.Word.RichTextContentControl tempControl =
                        extendedDocument.Controls.AddRichTextContentControl(nativeControl,
                        "VSTORichTextControl" + count.ToString());
                    richTextControls.Add(tempControl);
                }
            }
        }
    }
    

    En C#, también debe asociar el controlador de eventos Application_DocumentOpen al evento DocumentOpen .

    this.Application.DocumentOpen +=
        new Word.ApplicationEvents4_DocumentOpenEventHandler(Application_DocumentOpen);