Como: Adicionar controles de conteúdo para documentos do Word

Em projetos de nível de documento Word, você pode adicionar controles de conteúdo para o documento em seu projeto em tempo de design ou em tempo de execução. Em projetos do Word de nível de aplicativo, você pode adicionar controles de conteúdo para qualquer documento aberto em tempo de execução.

Aplicável a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de nível de aplicativo para Word 2007 e Word 2010. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.

Este tópico descreve as seguintes tarefas:

  • Adicionando controles de conteúdo em tempo de design

  • Adicionando controles de conteúdo em tempo de execução em um projeto de nível de documento

  • Adicionando controles de conteúdo em tempo de execução em um projeto de nível de aplicativo

Para obter informações sobre controles de conteúdo, consulte Controles de conteúdo.

Adicionando controles de conteúdo em tempo de Design

Há várias maneiras de adicionar os controles de conteúdo para o documento em um projeto de nível de documento em tempo de design:

  • Adicionar um controle de conteúdo da Controles do Word guia da caixa de ferramentas.

  • Adicionar um controle de conteúdo ao seu documento da mesma maneira você adicionaria um controle de conteúdo nativo no Word.

  • Arraste um controle de conteúdo para o documento a partir de Fontes de dados janela. Isso é útil quando você deseja vincular o controle aos dados quando o controle é criado. For more information, see Como: Preencher documentos com dados de objetos and Como: Preencher documentos com dados de um banco de dados..

ObservaçãoObservação

Seu computador pode mostrar nomes ou locais diferentes para alguns dos elementos da interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Configurações do Visual Studio.

Para adicionar um controle de conteúdo a um documento usando a caixa de ferramentas.

  1. No documento que está hospedado no Visual Studio designer, coloque o cursor onde deseja adicionar o controle de conteúdo, ou selecione o texto que você deseja que o controle de conteúdo para substituir.

  2. Abrir o caixa de ferramentas e clique no Controles do Word guia.

  3. Adicione o controle em uma das seguintes maneiras:

    • Clique duas vezes em um controle de conteúdo da caixa de ferramentas.

      or

    • Clique em um controle de conteúdo da caixa de ferramentas e pressione a tecla ENTER.

      or

    • Arraste um controle de conteúdo do caixa de ferramentas o documento. O controle de conteúdo é adicionado na seleção atual no documento, não no local do ponteiro do mouse.

ObservaçãoObservação

Não é possível adicionar um GroupContentControl usando o caixa de ferramentas. Você só pode adicionar um GroupContentControl no Word, ou em tempo de execução.

ObservaçãoObservação

Visual Studio não fornece um controle de conteúdo da caixa de seleção na caixa de ferramentas para projetos de 2010 do Word. Para adicionar um controle de conteúdo da caixa de seleção ao documento, você deve criar um ContentControl objeto programaticamente. For more information, see Controles de conteúdo.

Para adicionar um controle de conteúdo para um documento do Word

  1. No documento que está hospedado no Visual Studio designer, coloque o cursor onde deseja adicionar o controle de conteúdo, ou selecione o texto que você deseja que o controle de conteúdo para substituir.

  2. Na faixa de opções, clique no Developer guia.

    ObservaçãoObservação

    Se o Developer guia não estiver visível, você deve primeiro mostrá-lo. For more information, see Como: Mostrar guia desenvolvedor na faixa de opções.

  3. No controles de de grupo, clique no ícone para o controle de conteúdo que você deseja adicionar.

Adicionando controles de conteúdo em tempo de execução em um projeto de nível de documento

Você pode adicionar controles de conteúdo por meio de programação ao seu documento em tempo de execução usando métodos da Controls propriedade da ThisDocument classe no projeto. Cada método tem três sobrecargas que você pode usar para adicionar um controle de conteúdo das seguintes maneiras:

  • Adicione um controle na seleção atual.

  • Adicione um controle em um intervalo especificado.

  • Adicione um controle baseado em um controle de conteúdo nativo no documento.

Criada dinamicamente o conteúdo de controles não são persistentes no documento quando o documento é fechado. No entanto, um controle de conteúdo nativo permanecerá no documento. Você pode recriar um controle de conteúdo com base em um controle de conteúdo nativo na próxima vez em que o documento for aberto. For more information, see Adicionar controles a documentos do Office em tempo de execução.

ObservaçãoObservação

Para adicionar um controle de conteúdo da caixa de seleção a um documento em um projeto de 2010 do Word, você deve criar um ContentControl objeto. For more information, see Controles de conteúdo.

Para adicionar um controle de conteúdo na seleção atual

  • Use um ControlCollection que tem o nome do método Add<a classe de controle> (onde a classe de controle é o nome da classe do controle de conteúdo que você deseja adicionar, como AddRichTextContentControl), e que tem um único parâmetro para o nome do novo controle.

    O seguinte exemplo de código usa a ControlCollection.AddRichTextContentControl(String) método para adicionar um novo RichTextContentControl para o início do documento. Para executar esse código, adicione o código para o ThisDocument classe em seu projeto e a chamada a AddRichTextControlAtSelection método a partir do ThisDocument_Startup manipulador de eventos.

    Dim richTextControl1 As Microsoft.Office.Tools.Word.RichTextContentControl
    
    Private Sub AddRichTextControlAtSelection()
        Me.Paragraphs(1).Range.InsertParagraphBefore()
        Me.Paragraphs(1).Range.Select()
        richTextControl1 = Me.Controls.AddRichTextContentControl("richTextControl1")
        richTextControl1.PlaceholderText = "Enter your first name"
    End Sub
    
    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 adicionar um controle de conteúdo em um intervalo especificado

  • Use um ControlCollection que tem o nome do método Add<a classe de controle> (onde a classe de controle é o nome da classe de controle de conteúdo que você deseja adicionar, como AddRichTextContentControl), e que tem um Microsoft.Office.Interop.Word.Range parâmetro.

    O seguinte exemplo de código usa a ControlCollection.AddRichTextContentControl(Range, String) método para adicionar um novo RichTextContentControl para o início do documento. Para executar esse código, adicione o código para o ThisDocument classe em seu projeto e a chamada a AddRichTextControlAtRange método a partir do ThisDocument_Startup manipulador de eventos.

    Dim richTextControl2 As Microsoft.Office.Tools.Word.RichTextContentControl
    
    Private Sub AddRichTextControlAtRange()
        Me.Paragraphs(1).Range.InsertParagraphBefore()
        richTextControl2 = Me.Controls.AddRichTextContentControl(Me.Paragraphs(1).Range, _
            "richTextControl2")
        richTextControl2.PlaceholderText = "Enter your first name"
    End Sub
    
    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 adicionar um controle de conteúdo que se baseia em um controle de conteúdo nativo

  • Use um ControlCollection que tem o nome do método Add<a classe de controle> (onde a classe de controle é o nome da classe de controle de conteúdo que você deseja adicionar, como AddRichTextContentControl), e que tem um Microsoft.Office.Interop.Word.ContentControl parâmetro.

    O seguinte exemplo de código usa a ControlCollection.AddRichTextContentControl(ContentControl, String) método para criar uma nova RichTextContentControl para cada controle nativo de rich text, que está no documento. Para executar esse código, adicione o código para o ThisDocument classe em seu projeto e a chamada a CreateRichTextControlsFromNativeControls método a partir do ThisDocument_Startup manipulador de eventos.

    Private richTextControls As New System.Collections.Generic.List _
            (Of Microsoft.Office.Tools.Word.RichTextContentControl)
    
    Private Sub CreateRichTextControlsFromNativeControls()
        If Me.ContentControls.Count <= 0 Then
            Return
        End If
    
        Dim count As Integer = 0
        For Each nativeControl As Word.ContentControl In Me.ContentControls
            If nativeControl.Type = Word.WdContentControlType.wdContentControlRichText Then
                count += 1
                Dim tempControl As Microsoft.Office.Tools.Word.RichTextContentControl = _
                    Me.Controls.AddRichTextContentControl(nativeControl, _
                    "VSTORichTextContentControl" + count.ToString())
                richTextControls.Add(tempControl)
            End If
        Next nativeControl
    End Sub
    
    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);
            }
        }
    }
    

Adicionando controles de conteúdo em tempo de execução em um projeto de nível de aplicativo

Você pode adicionar controles de conteúdo por meio de programação para qualquer documento aberto em tempo de execução usando um suplemento em nível de aplicativo. Para fazer isso, gerar um Document item se baseia em um documento aberto do host e use métodos da Controls a propriedade deste item de host. Cada método tem três sobrecargas que você pode usar para adicionar um controle de conteúdo das seguintes maneiras:

  • Adicione um controle na seleção atual.

  • Adicione um controle em um intervalo especificado.

  • Adicione um controle baseado em um controle de conteúdo nativo no documento.

Criada dinamicamente o conteúdo de controles não são persistentes no documento quando o documento é fechado. No entanto, um controle de conteúdo nativo permanecerá no documento. Você pode recriar um controle de conteúdo com base em um controle de conteúdo nativo na próxima vez em que o documento for aberto. For more information, see Persistência de controles dinâmicos em documentos do Office.

Para obter mais informações sobre itens de host gerando em projetos de nível de aplicativo, consulte Estendendo os documentos do Word e pastas de trabalho do Excel em suplementos de nível de aplicativo em tempo de execução.

ObservaçãoObservação

Para adicionar um controle de conteúdo da caixa de seleção a um documento em um projeto de 2010 do Word, você deve criar um ContentControl objeto. For more information, see Controles de conteúdo.

Para adicionar um controle de conteúdo na seleção atual

  • Use um ControlCollection que tem o nome do método Add<a classe de controle> (onde a classe de controle é o nome da classe do controle de conteúdo que você deseja adicionar, como AddRichTextContentControl), e que tem um único parâmetro para o nome do novo controle.

    O seguinte exemplo de código usa a ControlCollection.AddRichTextContentControl(String) método para adicionar um novo RichTextContentControl para o início do documento ativo. Para executar esse código, adicione o código para o ThisAddIn classe em seu projeto e a chamada a AddRichTextControlAtSelection método a partir do ThisAddIn_Startup manipulador de eventos.

    Dim richTextControl1 As Microsoft.Office.Tools.Word.RichTextContentControl
    
    Private Sub AddRichTextControlAtSelection()
        Dim currentDocument As Word.Document = Me.Application.ActiveDocument
        currentDocument.Paragraphs(1).Range.InsertParagraphBefore()
        currentDocument.Paragraphs(1).Range.Select()
    
        ' Use the following line of code in projects that target the .NET Framework 4.
        Dim extendedDocument As Document = Globals.Factory.GetVstoObject(currentDocument)
    
        ' In projects that target the .NET Framework 3.5, use the following line of code.
        ' Dim extendedDocument As Document = currentDocument.GetVstoObject()
    
        richTextControl1 = extendedDocument.Controls.AddRichTextContentControl("richTextControl1")
        richTextControl1.PlaceholderText = "Enter your first name"
    End Sub
    
    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();
    
        // Use the following line of code in projects that target the .NET Framework 4.
        Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument);
    
        // In projects that target the .NET Framework 3.5, use the following line of code.
        // Document extendedDocument = currentDocument.GetVstoObject();
    
        richTextControl1 = extendedDocument.Controls.AddRichTextContentControl("richTextControl1");
        richTextControl1.PlaceholderText = "Enter your first name";
    }
    

Para adicionar um controle de conteúdo em um intervalo especificado

  • Use um ControlCollection que tem o nome do método Add<a classe de controle> (onde a classe de controle é o nome da classe de controle de conteúdo que você deseja adicionar, como AddRichTextContentControl), e que tem um Microsoft.Office.Interop.Word.Range parâmetro.

    O seguinte exemplo de código usa a ControlCollection.AddRichTextContentControl(Range, String) método para adicionar um novo RichTextContentControl para o início do documento ativo. Para executar esse código, adicione o código para o ThisAddIn classe em seu projeto e a chamada a AddRichTextControlAtRange método a partir do ThisAddIn_Startup manipulador de eventos.

    Dim richTextControl2 As Microsoft.Office.Tools.Word.RichTextContentControl
    
    Private Sub AddRichTextControlAtRange()
        Dim currentDocument As Word.Document = Me.Application.ActiveDocument
        currentDocument.Paragraphs(1).Range.InsertParagraphBefore()
    
        ' Use the following line of code in projects that target the .NET Framework 4.
        Dim extendedDocument As Document = Globals.Factory.GetVstoObject(currentDocument)
    
        ' In projects that target the .NET Framework 3.5, use the following line of code.
        ' Dim extendedDocument As Document = currentDocument.GetVstoObject()
    
        richTextControl2 = extendedDocument.Controls.AddRichTextContentControl( _
            extendedDocument.Paragraphs(1).Range, "richTextControl2")
        richTextControl2.PlaceholderText = "Enter your first name"
    End Sub
    
    private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl2;
    
    private void AddRichTextControlAtRange()
    {
        Word.Document currentDocument = this.Application.ActiveDocument;
        currentDocument.Paragraphs[1].Range.InsertParagraphBefore();
    
        // Use the following line of code in projects that target the .NET Framework 4.
        Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument);
    
        // In projects that target the .NET Framework 3.5, use the following line of code.
        // Document extendedDocument = currentDocument.GetVstoObject();
    
        richTextControl2 = extendedDocument.Controls.AddRichTextContentControl(
            currentDocument.Paragraphs[1].Range, "richTextControl2");
        richTextControl2.PlaceholderText = "Enter your first name";
    }
    

Para adicionar um controle de conteúdo que se baseia em um controle de conteúdo nativo

  • Use um ControlCollection que tem o nome do método Add<a classe de controle> (onde a classe de controle é o nome da classe de controle de conteúdo que você deseja adicionar, como AddRichTextContentControl), e que tem um Microsoft.Office.Interop.Word.ContentControl parâmetro.

    O seguinte exemplo de código usa a ControlCollection.AddRichTextContentControl(ContentControl, String) método para criar uma nova RichTextContentControl para cada controle nativo de rich text que está em um documento, depois que o documento for aberto. Para executar esse código, adicione o código para o ThisAddIn classe no projeto.

    Private richTextControls As New System.Collections.Generic.List _
        (Of Microsoft.Office.Tools.Word.RichTextContentControl)
    
    Private Sub Application_DocumentOpen(ByVal Doc As Microsoft.Office.Interop.Word.Document) _
        Handles Application.DocumentOpen
    
        If Doc.ContentControls.Count > 0 Then
    
            ' Use the following line of code in projects that target the .NET Framework 4.
            Dim extendedDocument As Document = Globals.Factory.GetVstoObject(Doc)
    
            ' In projects that target the .NET Framework 3.5, use the following line of code.
            ' Dim extendedDocument As Document = Doc.GetVstoObject()
    
            Dim count As Integer = 0
            For Each nativeControl As Word.ContentControl In Doc.ContentControls
                If nativeControl.Type = Word.WdContentControlType.wdContentControlRichText Then
                    count += 1
                    Dim tempControl As Microsoft.Office.Tools.Word.RichTextContentControl = _
                        extendedDocument.Controls.AddRichTextContentControl(nativeControl, _
                        "VSTORichTextContentControl" + count.ToString())
                    richTextControls.Add(tempControl)
                End If
            Next nativeControl
        End If
    End Sub
    
    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)
        {
            // Use the following line of code in projects that target the .NET Framework 4.
            Document extendedDocument = Globals.Factory.GetVstoObject(Doc);
    
            // In projects that target the .NET Framework 3.5, use the following line of code.
            // Document extendedDocument = Doc.GetVstoObject();
    
            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);
                }
            }
        }
    }
    

    Para C#, você também deve anexar o Application_DocumentOpen o manipulador de eventos para o DocumentOpen de evento.

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

Consulte também

Conceitos

Automatizar o Word usando o Extended objetos

Itens de host e a visão geral sobre controles de Host

Adicionar controles a documentos do Office em tempo de execução

Limitações de programação de itens de Host e controles de Host

Métodos auxiliares para controles de Host

Outros recursos

Os suplementos de nível de aplicativo de programação.

Programação personalizações em nível de documento