Adicionar controles de conteúdo a documentos do Word

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

Aplica-se a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de suplemento VSTO para Word. Para obter mais informações, consulte Recursos disponíveis por aplicativo e tipo de projeto do Office.

Este tópico descreve as seguintes tarefas:

Adicionar controles de conteúdo em tempo de design

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

  • Adicione um controle de conteúdo da guia Controles do Word da Caixa de Ferramentas.

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

  • Arraste um controle de conteúdo para o documento a partir da janela Fontes de Dados . Isso é útil quando você deseja vincular o controle aos dados quando o controle é criado. Para obter mais informações, consulte Como: Preencher documentos com dados de objetos e Como: Preencher documentos com dados de um banco de dados.

    Observação

    Seu computador pode mostrar diferentes nomes ou locais para alguns dos elementos de 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, confira Personalizar o IDE.

Para adicionar um controle de conteúdo a um documento usando a Caixa de Ferramentas

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

  2. Abra a caixa de ferramentas e clique na guia Controles do Word.

  3. Adicione o controle de uma das seguintes maneiras:

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

      or

    • Clique em um controle de conteúdo na caixa de ferramentas e, em seguida, pressione a tecla Enter .

      or

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

Observação

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

Observação

Visual Studio não fornece um controle de conteúdo de caixa de seleção na caixa de ferramentas. Para adicionar um controle de conteúdo de caixa de seleção ao documento, você deve criar um ContentControl objeto programaticamente. Para obter mais informações, consulte Controles de conteúdo.

Para adicionar um controle de conteúdo a um documento no Word

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

  2. Na Faixa de Opções, clique na guia Desenvolvedor .

    Observação

    Se a guia Desenvolvedor não estiver visível, você deverá mostrá-la primeiro. Para obter mais informações, consulte Como mostrar a guia Desenvolvedor na Faixa de Opções.

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

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

Você pode adicionar controles de conteúdo programaticamente ao seu documento em tempo de execução usando métodos da propriedade da Controls ThisDocument classe em seu 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.

    Os controles de conteúdo criados dinamicamente não são persistentes no documento quando o documento é fechado. No entanto, um controle de conteúdo nativo permanece no documento. Você pode recriar um controle de conteúdo baseado em um controle de conteúdo nativo na próxima vez que o documento for aberto. Para obter mais informações, consulte Adicionar controles a documentos do Office em tempo de execução.

Observação

Para adicionar um controle de conteúdo de caixa de seleção a um documento em um projeto do Word 2010, você deve criar um ContentControl objeto. Para obter mais informações, consulte Controles de conteúdo.

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

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

    O exemplo de código a seguir usa o AddRichTextContentControl método para adicionar um novo RichTextContentControl ao início do documento. Para executar esse código, adicione o código à ThisDocument classe em seu projeto e chame o AddRichTextControlAtSelection ThisDocument_Startup método do manipulador de eventos.

    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

  1. Use um método que tenha a classe de controle nameAdd< (onde classe de controle é o nome da classe> de controle de conteúdo que você deseja adicionar, como AddRichTextContentControl) e que tenha um ControlCollection Range parâmetro.

    O exemplo de código a seguir usa o AddRichTextContentControl método para adicionar um novo RichTextContentControl ao início do documento. Para executar esse código, adicione o código à ThisDocument classe em seu projeto e chame o AddRichTextControlAtRange ThisDocument_Startup método do manipulador de eventos.

    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 baseado em um controle de conteúdo nativo

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

    O exemplo de código a seguir usa o AddRichTextContentControl método para criar um novo RichTextContentControl para cada controle rich text nativo que está no documento. Para executar esse código, adicione o código à ThisDocument classe em seu projeto e chame o CreateRichTextControlsFromNativeControls ThisDocument_Startup método do manipulador de eventos.

    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);
            }
        }
    }
    

Adicionar controles de conteúdo em tempo de execução em um projeto de suplemento VSTO

Você pode adicionar controles de conteúdo programaticamente a qualquer documento aberto em tempo de execução usando um suplemento VSTO. Para fazer isso, gere um item de host baseado em um Document documento aberto e, em seguida, use métodos da propriedade desse item de Controls 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.

    Os controles de conteúdo criados dinamicamente não são persistentes no documento quando o documento é fechado. No entanto, um controle de conteúdo nativo permanece no documento. Você pode recriar um controle de conteúdo baseado em um controle de conteúdo nativo na próxima vez que o documento for aberto. Para obter mais informações, consulte Persistir controles dinâmicos em documentos do Office.

    Para obter mais informações sobre como gerar itens de host em projetos de suplemento VSTO, consulte Estender documentos do Word e pastas de trabalho do Excel em suplementos VSTO em tempo de execução.

Observação

Para adicionar um controle de conteúdo de caixa de seleção a um documento, você deve criar um ContentControl objeto. Para obter mais informações, consulte Controles de conteúdo.

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

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

    O exemplo de código a seguir usa o AddRichTextContentControl método para adicionar um novo RichTextContentControl ao início do documento ativo. Para executar esse código, adicione o código à ThisAddIn classe em seu projeto e chame o AddRichTextControlAtSelection ThisAddIn_Startup método do manipulador de eventos.

    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 adicionar um controle de conteúdo em um intervalo especificado

  1. Use um método que tenha a classe de controle nameAdd< (onde classe de controle é o nome da classe> de controle de conteúdo que você deseja adicionar, como AddRichTextContentControl) e que tenha um ControlCollection Range parâmetro.

    O exemplo de código a seguir usa o AddRichTextContentControl método para adicionar um novo RichTextContentControl ao início do documento ativo. Para executar esse código, adicione o código à ThisAddIn classe em seu projeto e chame o AddRichTextControlAtRange ThisAddIn_Startup método do manipulador de eventos.

    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 adicionar um controle de conteúdo baseado em um controle de conteúdo nativo

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

    O exemplo de código a seguir usa o método para criar um novo RichTextContentControl para cada controle rich text nativo que está em um documento, depois que o AddRichTextContentControl documento é aberto. Para executar esse código, adicione o código à ThisAddIn classe em seu projeto.

    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);
                }
            }
        }
    }
    

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

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