Passo a passo: Adicionar controles a um documento no runtime em um suplemento em nível de aplicativo

Você pode adicionar controles para alguns documento aberto Microsoft Office Word usando um suplemento ao aplicativo.Essa explicação passo a passo demonstra como usar a fita para permitir que usuários adicionem Button ou RichTextContentControl em um documento.

Se aplica: as informações contidas em este tópico aplica projetos no nível para a palavra 2010.Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.

Essa explicação passo a passo mostra as seguintes tarefas:

  • Criando um novo projeto do suplemento a palavra.

  • Fornecendo uma interface de usuário (UI) para adicionar controles ao documento.

  • adicionando controles ao documento em tempo de execução.

  • Removendo controles de documento.

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 de Visual Studio.

Pré-requisitos

Para completar este passo-a-passo, são necessários os seguintes componentes:

-

Uma edição do Visual Studio 2012 que inclui o Microsoft Office Developer Tools. Para obter mais informações, consulte [Configurando um computador para desenvolver soluções do Office](bb398242\(v=vs.110\).md).
  • Word 2013 ou Word 2010.

Criando um novo projeto do suplemento a palavra

Inicie criando um projeto do suplemento a palavra.

Para criar um novo projeto do suplemento a palavra

  1. Crie um projeto do suplemento ao nível para palavra com o nome WordDynamicControls.Para obter mais informações, consulte Como: criar projetos do Office em Visual Studio.

  2. Adicione uma referência ao conjunto de Microsoft.Office.Tools.Word.v4.0.Utilities.dll .Essa referência é necessária para adicionar programaticamente posteriormente um controle de formulários do windows para o documento em essa explicação passo a passo.

Fornecendo interface do usuário para adicionar controles a um documento

Adicione um guia personalizado à fita em palavras.Os usuários podem selecionar caixas de seleção na guia para adicionar controles a um documento.

Para fornecer uma interface de usuário para adicionar controles a um documento

  1. No menu Project, clique em Add New Item.

  2. Em a caixa de diálogo de Adicionar novo item , **fita (designer visual)**selecione.

  3. Altere o nome do novo fita a MyRibbon, e clique Adicionar.

    O arquivo de MyRibbon.cs ou de MyRibbon.vb abre no designer de fita e exibe uma guia e um grupo padrão.

  4. Em o designer de fita, clique no grupo de group1 .

  5. Em a janela de Propriedades , altere a propriedade de Rótulo para group1 para adicionar controles.

  6. De a guia de Controles de fita do Office de Caixa de Ferramentas, arraste um controle de CheckBox em group1.

  7. Clique CheckBox1 para selecioná-lo.

  8. Em a janela de Propriedades , altere as propriedades a seguir.

    Propriedade

    Valor

    Nome

    addButtonCheckBox

    Label

    Adicione o botão

  9. Adicione uma segunda caixa de seleção a group1e em seguida, altere as seguintes propriedades.

    Propriedade

    Valor

    Nome

    addRichTextCheckBox

    Label

    Adicione o controle de texto rico

  10. Em o designer de fita, clique duas vezes em adicione o botão.

    O manipulador de eventos de Click da caixa de seleção do botão adicionar abre na editor de códigos.

  11. Retornar ao designer de fita, clique duas vezes no controle adicionam rica de texto.

    O manipulador de eventos de Click da caixa de seleção rica do controle de texto adicionar abre na editor de códigos.

Posteriormente em esta explicação passo a passo, você adicionará código para esses manipuladores de eventos para adicionar e remover controles no documento ativo.

Adicionando e removendo controles no documento ativo

Em o código do suplemento, você deve converter o documento ativo em um item de host de Microsoft.Office.Tools.Word.Document antes de adicionar um controle.Em soluções do Office, os controles gerenciados podem ser adicionados somente para itens de host, que atuam como recipientes para os controles.Em projetos do suplemento ao aplicativo, os itens host podem ser criados em tempo de execução usando o método de GetVstoObject .

Adicionar métodos à classe de ThisAddIn que pode ser chamado para adicionar ou remover Button ou RichTextContentControl no documento ativo.Posteriormente em esta explicação passo a passo, você irá chamar esses métodos de manipuladores de eventos de Click das caixas de seleção em fita.

Para adicionar e remover controles no documento ativo

  1. Em Gerenciador de Soluções, clique duas vezes ThisAddIn.cs ou ThisAddIn.vb para abrir o arquivo no editor de códigos.

  2. Adicione o seguinte código à classe ThisAddIn:Esse código declara Button e objetos de RichTextContentControl que representam os controles que serão adicionados ao documento.

    Private button As Microsoft.Office.Tools.Word.Controls.Button = Nothing
    Private richTextControl As RichTextContentControl = Nothing
    
    private Microsoft.Office.Tools.Word.Controls.Button button = null;
    private RichTextContentControl richTextControl = null;
    
  3. Adicione o seguinte método à classe de ThisAddIn .Quando o usuário clica na caixa de seleção do botão adicionar em fita, esse método adiciona Button a seleção atual no documento se a caixa de seleção está selecionada, ou remove Button se a caixa de seleção está desmarcada.

    Friend Sub ToggleButtonOnDocument()
        Dim vstoDocument As Document = Globals.Factory.GetVstoObject(Me.Application.ActiveDocument)
    
        Dim name As String = "MyButton"
    
        If Globals.Ribbons.MyRibbon.addButtonCheckBox.Checked Then
            Dim selection = Me.Application.Selection
            If selection IsNot Nothing AndAlso selection.Range IsNot Nothing Then
                button = vstoDocument.Controls.AddButton( _
                    selection.Range, 100, 30, name)
            End If
        Else
            vstoDocument.Controls.Remove(name)
        End If
    End Sub
    
    internal void ToggleButtonOnDocument()
    {
        Document vstoDocument = Globals.Factory.GetVstoObject(this.Application.ActiveDocument);
    
    
        string name = "MyButton";
    
        if (Globals.Ribbons.MyRibbon.addButtonCheckBox.Checked)
        {
            Word.Selection selection = this.Application.Selection;
            if (selection != null && selection.Range != null)
            {
                button = vstoDocument.Controls.AddButton(
                    selection.Range, 100, 30, name);
            }
        }
        else
        {
            vstoDocument.Controls.Remove(name);
        }
    }
    
  4. Adicione o seguinte método à classe de ThisAddIn .Quando o usuário clica na caixa de seleção rica do controle de texto adicionar em fita, esse método adiciona RichTextContentControl a seleção atual no documento se a caixa de seleção está selecionada, ou remove RichTextContentControl se a caixa de seleção está desmarcada.

    Friend Sub ToggleRichTextControlOnDocument()
    
        Dim vstoDocument As Document = Globals.Factory.GetVstoObject(Me.Application.ActiveDocument)
    
        Dim name As String = "MyRichTextBoxControl"
    
        If Globals.Ribbons.MyRibbon.addRichTextCheckBox.Checked Then
            Dim selection = Me.Application.Selection
            If selection IsNot Nothing AndAlso selection.Range IsNot Nothing Then
                richTextControl = vstoDocument.Controls.AddRichTextContentControl( _
                        selection.Range, name)
            End If
        Else
            vstoDocument.Controls.Remove(name)
        End If
    End Sub
    
    internal void ToggleRichTextControlOnDocument()
    {
    
        Document vstoDocument = Globals.Factory.GetVstoObject(this.Application.ActiveDocument);
    
    
        string name = "MyRichTextBoxControl";
    
        if (Globals.Ribbons.MyRibbon.addRichTextCheckBox.Checked)
        {
            Word.Selection selection = this.Application.Selection;
            if (selection != null && selection.Range != null)
            {
                richTextControl = vstoDocument.Controls.AddRichTextContentControl(
                    selection.Range, name);
            }
        }
        else
        {
            vstoDocument.Controls.Remove(name);
        }
    }
    

Removendo o controle botão quando o documento é salvo

Os controles de formulários do windows não são persistidos quando o documento é salvo e fechado em.Em o entanto, um wrapper ActiveX para cada controle permanecerá no documento, e a borda de esse wrapper pode ser vista por usuários finais quando o documento é reaberta.Há várias maneiras para limpar controles de formulários do windows criados dinamicamente em suplementos.Em essa explicação passo a passo, você remove o controle por meio de Button quando o documento é salvo.

Para remover o controle botão quando o documento é salvo

  1. O arquivo no código de ThisAddIn.cs ou de ThisAddIn.vb, adicione o seguinte método à classe de ThisAddIn .este método é um manipulador de eventos para o evento de DocumentBeforeSave .Se o documento salvo tem um item de host de Document que está associado a ele, o manipulador de eventos obtém o item host e remove o controle de Button , se existir.

    Private Sub Application_DocumentBeforeSave(ByVal Doc As Word.Document, _
        ByRef SaveAsUI As Boolean, ByRef Cancel As Boolean) Handles Application.DocumentBeforeSave
    
        Dim isExtended As Boolean = Globals.Factory.HasVstoObject(Doc)
    
    
        If isExtended Then
            Dim vstoDocument As Document = Globals.Factory.GetVstoObject(Doc)
    
    
            If vstoDocument.Controls.Contains(button) Then
                vstoDocument.Controls.Remove(button)
                Globals.Ribbons.MyRibbon.addButtonCheckBox.Checked = False
            End If
        End If
    End Sub
    
    private void Application_DocumentBeforeSave(Word.Document Doc, 
        ref bool SaveAsUI, ref bool Cancel)
    {
        bool isExtended = Globals.Factory.HasVstoObject(Doc);
    
    
        if (isExtended)
        {
    
            Microsoft.Office.Tools.Word.Document vstoDocument = Globals.Factory.GetVstoObject(Doc);
    
            if (vstoDocument.Controls.Contains(button))
            {
                vstoDocument.Controls.Remove(button);
                Globals.Ribbons.MyRibbon.addButtonCheckBox.Checked = false;
            }
        }
    }
    
  2. Em C#, adicione o seguinte código ao manipulador de eventos de ThisAddIn_Startup .Esse código é necessário em C# para conectar o manipulador de eventos de Application_DocumentBeforeSave com o evento de DocumentBeforeSave .

    this.Application.DocumentBeforeSave += 
        new Word.ApplicationEvents4_DocumentBeforeSaveEventHandler(
        Application_DocumentBeforeSave);
    

Adicionando e removendo controles quando o usuário clica nas caixas de seleção em fita

Finalmente, modifique os manipuladores de eventos de Click das caixas de seleção que você adicionou à fita para adicionar ou remover controles no documento.

Para adicionar ou remover controles quando o usuário clica nas caixas de seleção em fita

  • O arquivo no código de MyRibbon.cs ou de MyRibbon.vb, substitui addButtonCheckBox_Click e manipuladores de eventos gerados de addRichTextCheckBox_Click com o código a seguir.Esse código redefinir esses manipuladores de eventos para chamar os métodos de ToggleButtonOnDocument e de ToggleRichTextControlOnDocument que você adicionou à classe ThisAddIn anteriormente em este passo-a-passo.

    Private Sub addButtonCheckBox_Click(ByVal sender As System.Object, _
        ByVal e As RibbonControlEventArgs) Handles addButtonCheckBox.Click
        Globals.ThisAddIn.ToggleButtonOnDocument()
    End Sub
    
    Private Sub addRichTextCheckBox_Click(ByVal sender As System.Object, _
        ByVal e As RibbonControlEventArgs) Handles addRichTextCheckBox.Click
        Globals.ThisAddIn.ToggleRichTextControlOnDocument()
    End Sub
    
    private void addButtonCheckBox_Click(object sender, RibbonControlEventArgs e)
    {
        Globals.ThisAddIn.ToggleButtonOnDocument();
    }
    
    private void addRichTextCheckBox_Click(object sender, RibbonControlEventArgs e)
    {
        Globals.ThisAddIn.ToggleRichTextControlOnDocument();
    }
    

testando a solução

Adicionar controles a um documento selecionando-os a partir da guia personalizado em fita.Quando você salvar o documento, o controle de Button é removido.

para testar a solução.

  1. Pressione F5 para executar o seu projeto.

  2. Em o documento ativo, pressione a tecla ENTER algumas vezes para adicionar novos parágrafos vazios para o documento.

  3. Selecione o primeiro parágrafo.

  4. Clique na guia de Suplementos .

  5. Em o grupo de adicionar controles , clique Adicionar Botão.

    Um botão aparece no primeiro parágrafo.

  6. Selecione o parágrafo o último.

  7. Em o grupo de adicionar controles , clique Adicione o controle de texto rico.

    Um controle rica do conteúdo de texto é adicionado ao parágrafo o último.

  8. Salve o documento.

    O botão é removido do documento.

Próximas etapas

Você pode aprender mais sobre controles nos suplementos o nível de esses tópicos:

Consulte também

Tarefas

Como: adicionar controles do Windows Forms a documentos do Office

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

Conceitos

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

Persisting controles dinâmicos em documentos do Office

Estendendo os documentos do Word e pastas de trabalho do Excel em suplementos de nível de aplicativo em tempo de execução

Outros recursos

Soluções do Word