Partilhar via


Demonstra Passo a passo: Exibindo os painéis de tarefas personalizados com mensagens de email no Outlook

Esta explicação passo a passo demonstra como exibir uma instância exclusiva de um painel de tarefas personalizado com cada mensagem de email é criada ou aberta. Os usuários podem exibir ou ocultar o painel de tarefas personalizado usando um botão na faixa de opções de cada mensagem de email.

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

Para exibir um painel de tarefas personalizado com o windows Explorer ou Inspector de vários, você deve criar uma instância do painel de tarefas personalizado para cada janela aberta. Para obter mais informações sobre o comportamento dos painéis de tarefas personalizado no Outlook windows, consulte Visão geral sobre painéis de tarefas personalizado.

ObservaçãoObservação

Esta explicação passo a passo apresenta o código de suplemento pequenas seções para facilitar discutir a lógica por trás do código. Para exibir todo o conteúdo de cada arquivo que você editar essa explicação passo a passo, consulte Como: Exibir painéis de tarefas personalizados com mensagens de email no Outlook.

This walkthrough illustrates the following tasks:

  • Projetando a interface do usuário (UI) do painel de tarefas personalizado.

  • Criando uma interface de usuário da faixa de opções personalizada.

  • Exibindo a UI de faixa de opções personalizada com mensagens de email.

  • Criando uma classe para gerenciar janelas Inspector e painéis de tarefas personalizado.

  • Inicializando e limpeza de recursos usados pelo suplemento.

  • Sincronizando o botão de alternância de faixa de opções com o painel de tarefas personalizado.

ObservaçãoObservação

Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. The Visual Studio edition that you have and the settings that you use determine these elements. For more information, see Trabalhando com configurações.

Pré-requisitos

You need the following components to complete this walkthrough:

-

Uma edição do Visual Studio 2010 que inclua as ferramentas de desenvolvedor do Microsoft Office. Para obter mais informações, consulte [Configurando um computador para desenvolver soluções do Office](bb398242\(v=vs.100\).md).
  • Microsoft Office Outlook 2007 ou Microsoft Outlook 2010.

link para vídeo Para uma demonstração de vídeo relacionada, consulte Fazer como i: Use os painéis de tarefas no Outlook?.

Creating the Project

Painéis de tarefas personalizados são implementados no nível do aplicativo add-ins. Comece criando um projeto do suplemento para Outlook.

Para criar um novo projeto.

  • Criar um suplemento do Outlook o projeto com o nome OutlookMailItemTaskPane. Use o suplemento do Outlook o modelo de projeto. For more information, see Como: Criar projetos do Office em Visual Studio.

    Visual StudioAbre a ThisAddIn.cs ou ThisAddIn. vb arquivo de código e adiciona a OutlookMailItemTaskPane de projeto para Solution Explorer.

Projetando a Interface de usuário do painel de tarefas personalizado

Não há nenhum designer visual para painéis de tarefas personalizados, mas você pode criar um controle de usuário com a interface do usuário que você deseja. O painel de tarefas personalizado neste suplemento tem uma interface de usuário simple que contém um TextBox de controle. Posteriormente nesta explicação passo a passo, você irá adicionar o controle de usuário para o painel de tarefas personalizado.

Design de interface do usuário do painel de tarefas personalizado

  1. Em Solution Explorer, clique na OutlookMailItemTaskPane project.

  2. On the Project menu, click Add User Control.

  3. No Add New Item caixa de diálogo, altere o nome do controle de usuário para TaskPaneControle, em seguida, clique em Add.

    O controle de usuário abre no designer.

  4. Do Controles comuns guia da caixa de ferramentas, arraste um TextBox controle para o controle de usuário.

Projetando a Interface de usuário da faixa de opções

Um dos objetivos para este suplemento é fornecer aos usuários uma maneira para ocultar ou exibir o painel de tarefas personalizado na faixa de cada mensagem de email. Forneça a interface do usuário, crie uma interface do usuário personalizada que exibe um botão de alternância que os usuários podem clicar para exibir ou ocultar o painel de tarefas personalizado.

Para criar uma interface de usuário da faixa de opções personalizada

  1. On the Project menu, click Add New Item.

  2. No Add New Item caixa de diálogo, selecione a faixa de opções (Visual Designer).

  3. Alterar o nome da nova faixa de opções para ManageTaskPaneRibbone clique em Add.

    O ManageTaskPaneRibbon.cs ou ManageTaskPaneRibbon.vb abre no Designer de faixa de opções de arquivo e exibe uma guia de padrão e o grupo.

  4. No Designer de faixa de opções, clique em Grupo1.

  5. No Propriedades janela, defina a rótulo propriedade ao Gerenciador de painel de tarefas.

  6. Do Controles de faixa de opções do Office guia da Toolbox, arraste um controle ToggleButton para o Gerenciador de tarefas do painel grupo.

  7. Clique em toggleButton1.

  8. No Propriedades janela, defina a rótulo propriedade para mostrar o painel de tarefas.

Exibir a Interface de usuário da faixa de opções personalizada com mensagens de email

O painel de tarefas personalizado que você criar nesta explicação é projetado para aparecer somente com o windows do Inspetor de propriedades que contêm mensagens de email. Portanto, defina as propriedades para exibir a sua interface de usuário da faixa de opções personalizada somente com essas janelas.

Para exibir a interface de usuário da faixa de opções personalizada com mensagens de email

  1. No Designer de faixa de opções, clique na ManageTaskPaneRibbon faixa de opções.

  2. No Propriedades janela, clique na lista suspensa lista Avançar para RibbonTypee selecione Microsoft.Outlook.Mail.Compose e Microsoft.Outlook.Mail.Read.

Criando uma classe para gerenciar janelas Inspector e painéis de tarefas personalizados

Há vários casos em que o suplemento deve identificar o painel de tarefas personalizado é associado uma mensagem de email específico. Esses casos incluem o seguinte:

  • Quando o usuário fecha uma mensagem de email. Nesse caso, o suplemento deve remover o painel de tarefas personalizado correspondente para garantir que os recursos utilizados pelo suplemento são limpos corretamente.

  • Quando o usuário fecha o painel de tarefas personalizado. Nesse caso, o suplemento deve atualizar o estado do botão de alternância na faixa de opções da mensagem de email.

  • Quando o usuário clica no botão de alternância na faixa de opções. Nesse caso, o suplemento deve ocultar ou exibir o painel de tarefas correspondentes.

Para ativar o add-in controlar o painel de tarefas personalizado é associado a cada mensagem de email aberta, criar uma classe personalizada que envolve os pares de Inspector e CustomTaskPane objetos. Essa classe cria um novo objeto de painel de tarefas personalizado para cada mensagem de email e ele exclui o painel de tarefas personalizado quando a mensagem de email correspondente é fechada.

Para criar uma classe para gerenciar janelas Inspector e painéis de tarefas personalizados

  1. Em Solution Explorer, com o botão direito do ThisAddIn.cs ou ThisAddIn. vb de arquivo e clique em Exibir código.

  2. Adicione as seguintes instruções para a parte superior do arquivo.

    Imports System.Collections.Generic
    Imports Microsoft.Office.Tools
    Imports Office = Microsoft.Office.Core
    Imports Outlook = Microsoft.Office.Interop.Outlook
    
    using Microsoft.Office.Tools;
    
  3. Adicione o seguinte código para o ThisAddIn.cs ou ThisAddIn. vb arquivo fora do ThisAddIn classe (para Visual C#, adicione esse código dentro a OutlookMailItemTaskPane namespace). O InspectorWrapper classe gerencia um par de Inspector e CustomTaskPane objetos. Você irá concluir a definição dessa classe nas etapas a seguir.

    Public Class InspectorWrapper
        Private inspector As Outlook.Inspector
        Private WithEvents inspectorEvents As Outlook.InspectorEvents_Event
        Private WithEvents taskPane As CustomTaskPane
    
    public class InspectorWrapper
    {
        private Outlook.Inspector inspector;
        private CustomTaskPane taskPane;
    
  4. Adicione o seguinte construtor após o código que você adicionou na etapa anterior. Este construtor cria e inicializa um novo painel de tarefas personalizado que está associado a Inspector objeto que é passado pol. No C#, o construtor anexa também manipuladores de eventos para o Close evento da Inspector objeto e o VisibleChanged evento da CustomTaskPane objeto.

    Public Sub New(ByVal Inspector As Outlook.Inspector)
        Me.inspector = Inspector
        inspectorEvents = TryCast(Me.inspector, Outlook.InspectorEvents_Event)
        taskPane = Globals.ThisAddIn.CustomTaskPanes.Add(New TaskPaneControl(), _
            "My task pane", Inspector)
    End Sub
    
    public InspectorWrapper(Outlook.Inspector Inspector)
    {
        inspector = Inspector;
        ((Outlook.InspectorEvents_Event)inspector).Close +=
            new Outlook.InspectorEvents_CloseEventHandler(InspectorWrapper_Close);
    
        taskPane = Globals.ThisAddIn.CustomTaskPanes.Add(
            new TaskPaneControl(), "My task pane", inspector);
        taskPane.VisibleChanged += new EventHandler(TaskPane_VisibleChanged);
    }
    
  5. Adicione o seguinte método após o código que você adicionou na etapa anterior. Esse método é um manipulador de eventos para o VisibleChanged evento da CustomTaskPane objeto está contido na InspectorWrapper classe. Esse código atualiza o estado do botão de alternância, sempre que o usuário abre ou fecha o painel de tarefas personalizado.

    Private Sub TaskPane_VisibleChanged(ByVal sender As Object, ByVal e As EventArgs) _
        Handles taskPane.VisibleChanged
        Globals.Ribbons(inspector).ManageTaskPaneRibbon.ToggleButton1.Checked = taskPane.Visible
    End Sub
    
    void TaskPane_VisibleChanged(object sender, EventArgs e)
    {
        Globals.Ribbons[inspector].ManageTaskPaneRibbon.toggleButton1.Checked = 
            taskPane.Visible;
    }
    
  6. Adicione o seguinte método após o código que você adicionou na etapa anterior. Esse método é um manipulador de eventos para o Close o evento da Inspector objeto que contém a mensagem de email atual. O manipulador de eventos libera recursos quando a mensagem de email é fechada. O manipulador de eventos também remove o painel de tarefas personalizado atual a partir de CustomTaskPanes coleção. Isso ajuda a impedir que várias instâncias do painel de tarefas personalizado quando a próxima mensagem de email é aberta.

    Sub InspectorWrapper_Close() Handles inspectorEvents.Close
        If Not (taskPane Is Nothing) Then
            Globals.ThisAddIn.CustomTaskPanes.Remove(taskPane)
        End If
    
        taskPane = Nothing
        Globals.ThisAddIn.InspectorWrappers.Remove(inspector)
        RemoveHandler inspectorEvents.Close, AddressOf InspectorWrapper_Close
        inspector = Nothing
    End Sub
    
    void InspectorWrapper_Close()
    {
        if (taskPane != null)
        {
            Globals.ThisAddIn.CustomTaskPanes.Remove(taskPane);
        }
    
        taskPane = null;
        Globals.ThisAddIn.InspectorWrappers.Remove(inspector);
        ((Outlook.InspectorEvents_Event)inspector).Close -=
            new Outlook.InspectorEvents_CloseEventHandler(InspectorWrapper_Close);
        inspector = null;
    }
    
  7. Adicione o seguinte código após o código que você adicionou na etapa anterior. Posteriormente nesta explicação passo a passo, você chamará esta propriedade de um método na interface de usuário da faixa de opções personalizada para exibir ou ocultar o painel de tarefas personalizado.

        Public ReadOnly Property CustomTaskPane() As CustomTaskPane
            Get
                Return taskPane
            End Get
        End Property
    End Class
    
        public CustomTaskPane CustomTaskPane
        {
            get
            {
                return taskPane;
            }
        }
    }
    

Inicializando e limpeza de recursos usados pelo Add-In

Adicione código para o ThisAddIn classe para inicializar o suplemento quando ele for carregado e limpar os recursos usados pelo add-in quando ela é descarregada. Inicializar o suplemento, configurando um manipulador de eventos para o NewInspector eventos e passando todas as mensagens de email existentes a este manipulador de eventos. Quando o suplemento é descarregado, desanexar o manipulador de eventos e limpar os objetos usados pelo suplemento.

Para inicializar e limpar recursos utilizados pelo suplemento

  1. No ThisAddIn.cs ou ThisAddIn. vb de arquivo, localize a definição da ThisAddIn classe.

  2. Adicionar as seguintes declarações para o ThisAddIn classe:

    • O inspectorWrappersValue campo contém todas as Inspector e InspectorWrapper os objetos que são gerenciados pelo add-in.

    • O inspectors campo mantém uma referência à coleção de janelas do Inspetor de propriedades na instância atual do Outlook. Esta referência impede que o coletor de lixo liberar a memória que contém o manipulador de eventos para o NewInspector o evento, que você irá declarar na próxima etapa.

    Private inspectorWrappersValue As New Dictionary(Of Outlook.Inspector, InspectorWrapper)
    Private WithEvents inspectors As Outlook.Inspectors
    
    private Dictionary<Outlook.Inspector, InspectorWrapper> inspectorWrappersValue =
        new Dictionary<Outlook.Inspector, InspectorWrapper>();
    private Outlook.Inspectors inspectors;
    
  3. Substituir o ThisAddIn_Startup método com o código a seguir. Esse código anexa um manipulador de eventos para o NewInspector evento e ele passa cada existentes Inspector o objeto para o manipulador de eventos. Se o usuário carrega o suplemento depois que o Outlook já está em execução, o suplemento usa essas informações para criar painéis de tarefas personalizados para todas as mensagens de email que já estão abertas.

    Private Sub ThisAddIn_Startup(ByVal sender As Object, ByVal e As System.EventArgs) _
        Handles Me.Startup
    
        inspectors = Me.Application.Inspectors
        Dim inspector As Outlook.Inspector
        For Each inspector In inspectors
            Inspectors_NewInspector(inspector)
        Next inspector
    End Sub
    
    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        inspectors = this.Application.Inspectors;
        inspectors.NewInspector +=
            new Outlook.InspectorsEvents_NewInspectorEventHandler(
            Inspectors_NewInspector);
    
        foreach (Outlook.Inspector inspector in inspectors)
        {
            Inspectors_NewInspector(inspector);
        }
    }
    
  4. Substituir o ThisAddIn_ShutDown método com o código a seguir. Esse código desanexa o NewInspector manipulador de eventos e limpa os objetos usados pelo add-in.

    Private Sub ThisAddIn_Shutdown(ByVal sender As Object, ByVal e As System.EventArgs) _
        Handles Me.Shutdown
    
        RemoveHandler inspectors.NewInspector, AddressOf Inspectors_NewInspector
        inspectors = Nothing
        inspectorWrappersValue = Nothing
    End Sub
    
    private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
    {
        inspectors.NewInspector -=
            new Outlook.InspectorsEvents_NewInspectorEventHandler(
            Inspectors_NewInspector);
        inspectors = null;
        inspectorWrappersValue = null;
    }
    
  5. Adicione o seguinte NewInspector o manipulador de eventos para o ThisAddIn classe. Se uma nova Inspector contém uma mensagem de email, o método cria uma instância de uma nova InspectorWrapper o objeto para gerenciar o relacionamento entre a mensagem de email e o painel de tarefas correspondentes.

    Sub Inspectors_NewInspector(ByVal Inspector As Outlook.Inspector) _
        Handles inspectors.NewInspector
    
        If TypeOf Inspector.CurrentItem Is Outlook.MailItem Then
            inspectorWrappersValue.Add(Inspector, New InspectorWrapper(Inspector))
        End If
    End Sub
    
    void Inspectors_NewInspector(Outlook.Inspector Inspector)
    {
        if (Inspector.CurrentItem is Outlook.MailItem)
        {
            inspectorWrappersValue.Add(Inspector, new InspectorWrapper(Inspector));
        }
    }
    
  6. Adicione a seguinte propriedade para o ThisAddIn classe. Essa propriedade expõe particular inspectorWrappersValue campo do código fora do ThisAddIn classe.

    Public ReadOnly Property InspectorWrappers() As Dictionary(Of Outlook.Inspector, InspectorWrapper)
        Get
            Return inspectorWrappersValue
        End Get
    End Property
    
    public Dictionary<Outlook.Inspector, InspectorWrapper> InspectorWrappers
    {
        get
        {
            return inspectorWrappersValue;
        }
    }
    

Checkpoint

Crie seu projeto para garantir que ele foi compilado sem erros.

Para construir seu projeto.

  • Em Solution Explorer, com o botão direito do OutlookMailItemTaskPane de projeto e, em seguida, clique em Build. Verifique se que o projeto é compilado sem erros.

O botão de alternância de faixa de opções de sincronização com o painel de tarefas personalizado

O botão de alternância será exibido ao ser pressionado quando o painel de tarefas estiver visível, e parece não ser pressionado quando o painel de tarefas está oculta. Para sincronizar o estado do botão com o painel de tarefas personalizado, modificar o Click o manipulador de eventos do botão de alternância.

Para sincronizar o painel de tarefas personalizado com o botão de alternância

  1. No Designer de faixa de opções, clique duas vezes o Mostrar painel de tarefas o botão de alternância.

    Visual Studio gera automaticamente um manipulador de evento chamado toggleButton1_Click, as alças de Click eventos do botão de alternância. Também abre uma Visual Studio de ManageTaskPaneRibbon.cs ou ManageTaskPaneRibbon.vb o arquivo no Editor de código.

  2. Adicione as seguintes instruções sobre o ManageTaskPaneRibbon.cs ou ManageTaskPaneRibbon.vb arquivo.

    Imports Microsoft.Office.Tools.Ribbon
    Imports Outlook = Microsoft.Office.Interop.Outlook
    Imports Microsoft.Office.Tools
    
    using Outlook = Microsoft.Office.Interop.Outlook;
    using Microsoft.Office.Tools;
    
  3. Substituir o toggleButton1_Click o manipulador de eventos com o código a seguir. Quando o usuário clica no botão de alternância, esse método oculta ou exibe o painel de tarefas personalizado que está associado com a janela atual do Inspetor de propriedades.

    Private Sub ToggleButton1_Click(ByVal sender As System.Object, _
        ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) _
        Handles ToggleButton1.Click
    
        Dim inspector As Outlook.Inspector = e.Control.Context
        Dim inspectorWrapper As InspectorWrapper = Globals.ThisAddIn.InspectorWrappers(inspector)
        Dim taskPane As CustomTaskPane = inspectorWrapper.CustomTaskPane
        If Not (taskPane Is Nothing) Then
            taskPane.Visible = TryCast(sender, RibbonToggleButton).Checked
        End If
    End Sub
    
    private void toggleButton1_Click(object sender, RibbonControlEventArgs e)
    {
        Outlook.Inspector inspector = (Outlook.Inspector)e.Control.Context;
        InspectorWrapper inspectorWrapper = Globals.ThisAddIn.InspectorWrappers[inspector];
        CustomTaskPane taskPane = inspectorWrapper.CustomTaskPane;
        if (taskPane != null)
        {
            taskPane.Visible = ((RibbonToggleButton)sender).Checked;
        }
    }
    

Testing the Project

Quando você inicia a depuração do projeto, o Outlook abre e o suplemento é carregado. O suplemento exibe uma instância exclusiva do painel de tarefas personalizado com cada mensagem de email é aberto. Crie várias novas mensagens de email para testar o código.

Para testar o suplemento

  1. Press F5.

  2. No Outlook, clique em nova para criar uma nova mensagem de email.

  3. Na faixa de opções da mensagem de email, clique no Add-Ins guia e clique o Mostrar painel de tarefas botão.

    Verifique com o título de um painel de tarefas Meu painel de tarefas é exibida com a mensagem de email.

  4. No painel de tarefas, digite o primeiro painel de tarefas na caixa de texto.

  5. Feche o painel de tarefas.

    Verifique o estado da Mostrar painel de tarefas botão muda para que ele não seja mais pressionado.

  6. Clique o Mostrar painel de tarefas novamente.

    Verifique se o painel de tarefas é aberta e que a caixa de texto contém ainda seqüência primeiro painel de tarefas.

  7. No Outlook, clique em nova para criar uma segunda mensagem de email.

  8. Na faixa de opções da mensagem de email, clique no Add-Ins guia e clique o Mostrar painel de tarefas botão.

    Verifique com o título de um painel de tarefas Meu painel de tarefas é exibida com a mensagem de email e a caixa de texto no painel de tarefas está vazia.

  9. No painel de tarefas, digite o segundo painel de tarefas na caixa de texto.

  10. Alterar o foco para a primeira mensagem de email.

    Verifique se o painel de tarefas está associado esta mensagem de email ainda exibe primeiro painel de tarefas na caixa de texto.

Este suplemento também lida com mais cenários que você pode tentar avançados. Por exemplo, você pode testar o comportamento ao visualizar emails usando o Próximo Item e Item anterior botões. Você também pode testar o comportamento quando você descarrega o suplemento, abre várias mensagens de email e, em seguida, recarregue o suplemento.

Próximas etapas

Você pode aprender mais sobre como criar painéis de tarefas personalizados com estes tópicos:

Consulte também

Tarefas

Como: Adicionar um painel de tarefas personalizado a um aplicativo

Demonstra Passo a passo: A automatização de um aplicativo a partir de um painel de tarefas personalizado

Demonstra Passo a passo: Sincronizando um painel de tarefas personalizado com um botão da faixa de opções

Como: Exibir painéis de tarefas personalizados com mensagens de email no Outlook

Conceitos

Gerenciando os painéis de tarefas personalizados em várias janelas de aplicativo

Acessando a faixa de opções em tempo de execução

Outros recursos

Visão geral sobre painéis de tarefas personalizado

Visão geral da faixa de opções

Visão geral do modelo de objeto do Outlook