Compartilhar via


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

Essa explicação passo a passo demonstra como exibir uma instância única de um painel de tarefa customizada com cada mensagem de email que é criada ou aberta.Os usuários podem exibir ou ocultar o painel de tarefa personalizada usando um botão em fita 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 2013 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 tarefa customizada com várias do windows Explorer ou de inspector, você deve criar uma instância do painel de tarefa personalizada para cada janela que é aberta.Para obter mais informações sobre o comportamento dos painéis de tarefa personalizada no windows do Outlook, consulte Painéis de tarefas personalizados.

ObservaçãoObservação

Essa explicação passo a passo apresenta o código do suplemento em seções pequenas para facilitar discutir a lógica arquivo de código.

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

  • Criando a interface de usuário (UI) do painel de tarefa personalizada.

  • Criando uma fita interface do usuário personalizada.

  • Exibindo a fita personalizado interface do usuário com mensagens de email.

  • Criando uma classe para gerenciar janelas de inspector e painéis de tarefa personalizada.

  • Inicializando e limpando recursos usados pelo suplemento.

  • Sincronizando o botão de alternância de fita com o painel de tarefa personalizada.

ObservaçãoObservação

Seu computador pode mostrar diferentes nomes ou localizações para alguns dos elementos de interface do usuário Visual Studio nas instruções a seguir.A edição 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).
  • Microsoft ou Outlook 2013 Microsoft Outlook 2010.

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

Criando o projeto

Os painéis de tarefa personalizada são implementados em suplementos do aplicativo.Inicie criando um projeto do suplemento para Outlook.

para criar um novo projeto

  • crie um projeto de Suplemento do Outlook com o nome OutlookMailItemTaskPane.Use o modelo de projeto de Suplemento do Outlook .Para obter mais informações, consulte Como: criar projetos do Office em Visual Studio.

    Visual Studio abre o arquivo de código de ThisAddIn.cs ou de ThisAddIn.vb e adiciona o projeto de OutlookMailItemTaskPane a Gerenciador de Soluções.

Criando a interface do usuário do painel de tarefa personalizada

Não há nenhum designer visual para os painéis de tarefa personalizada, mas você pode criar um controle de usuário com UI que você deseja.O painel de tarefa personalizada no suplemento tem interface de usuário simples que contém um controle de TextBox .Posteriormente em esta explicação passo a passo, você adicionará o controle de usuário para o painel de tarefa personalizada.

Para criar a interface do usuário do painel de tarefa personalizada

  1. Em Gerenciador de Soluções, clique no projeto de OutlookMailItemTaskPane .

  2. No menu Project, clique em Add User Control.

  3. Em a caixa de diálogo de Adicionar novo item , altere o nome do controle de usuário a TaskPaneControl, clique em Adicionar.

    O controle de usuário é aberto no designer.

  4. De a guia de Controles Comuns de Caixa de Ferramentas, arraste um controle de Caixa de Texto ao controle de usuário.

Criando a interface do usuário de fita

Um dos meta para este suplemento é fornecer aos usuários uma maneira para ocultar ou exibir o painel de tarefa personalizada de fita de cada mensagem de email.Para fornecer a interface do usuário, crie uma fita 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 tarefa personalizada.

Para criar uma fita interface de usuário personalizado

  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 ManageTaskPaneRibbon, e clique Adicionar.

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

  4. Em o designer de fita, clique group1.

  5. Em a janela de Propriedades , defina a propriedade de Rótulo ao gerenciador do painel de tarefas.

  6. De a guia de Controles de fita do Office de Caixa de Ferramentas, arraste um controle de ToggleButton no grupo de Gerenciador do painel de tarefas .

  7. Clique toggleButton1.

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

Exibir a interface do usuário personalizada de fita com as mensagens de email

O painel de tarefa personalizada que você criar em essa explicação passo a passo é projetado para ser exibido somente com janelas de inspector que contêm mensagens de email.Portanto, defina as propriedades para exibir a fita personalizado interface do usuário somente com essas janelas.

Para exibir a fita personalizado interface do usuário com mensagens de email

  1. Em o designer de fita, clique em. ManageTaskPaneRibbon da fita

  2. Em a janela de Propriedades , clique na lista suspensa próxima de RibbonType, e selecione Microsoft.Outlook.Mail.Compose e Microsoft.Outlook.Mail.Read.

Criando uma classe para gerenciar janelas de inspector e painéis de tarefa personalizada

Há vários casos em que o suplemento deve identificar qual o painel de tarefa personalizada está associado com uma mensagem de email específica.Esses casos incluem o seguinte:

  • quando o usuário fechar uma mensagem de email.Em esse caso, o suplemento deve remover o painel correspondente da tarefa personalizada para garantir que os recursos usados por suplementos sejam limpados corretamente.

  • Quando o usuário fechar o painel de tarefa personalizada.Em esse caso, o suplemento deve atualizar o estado do botão de alternância em fita de mensagem de email.

  • Quando o usuário clica no botão de alternância em fita.Em esse caso, o suplemento deve ocultar ou exibir o painel de tarefas correspondente.

Para ativar o suplemento para manter controle do painel de tarefa personalizada é associada a cada um mensagem de email aberta, crie uma classe personalizada que envolve pares de Inspector e de objetos de CustomTaskPane .Esta classe cria um novo objeto do painel de tarefa personalizada para cada mensagem de email, e exclui o painel de tarefa personalizada quando a mensagem de email correspondente é fechada.

Para criar uma classe para gerenciar janelas de inspector e painéis de tarefa personalizada

  1. Em Gerenciador de Soluções, clique com o botão direito do mouse no arquivo de ThisAddIn.cs ou de ThisAddIn.vb , clique em Exibir Código.

  2. Adicione as instruções a seguir à 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 a ThisAddIn.cs ou arquivo de ThisAddIn.vb , fora da classe de ThisAddIn (para visual C#, adicione este código dentro do namespace de OutlookMailItemTaskPane ).a classe de InspectorWrapper gerencia um par de Inspector e de objetos de CustomTaskPane .Você concluirá a definição de essa classe as seguintes etapas.

    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 código ao construtor depois que você adicionou na etapa anterior.Esse construtor cria e inicializa um novo painel de tarefa personalizada que é associado ao objeto de Inspector que é passado.Em C#, o construtor também anexa manipuladores de eventos para o evento de Close do objeto de Inspector e ao evento de VisibleChanged do objeto de CustomTaskPane .

    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.Este método é um manipulador de eventos para o evento de VisibleChanged do objeto de CustomTaskPane que está contido na classe de InspectorWrapper .Esse código atualiza o estado do botão de alternância sempre que o usuário abre ou fechar o painel de tarefa personalizada.

    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.Este método é um manipulador de eventos para o evento de Close do objeto de Inspector 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 atual da tarefa de coleção personalizada de CustomTaskPanes .Isso ajuda a evitar várias instâncias do painel de tarefa personalizada quando a mensagem de email seguir é 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 código a seguir após o código que você adicionou na etapa anterior.Posteriormente em esta explicação passo a passo, você irá chamar essa propriedade de um método na fita personalizado interface de usuário para exibir ou ocultar o painel de tarefa personalizada.

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

Inicializando e limpando recursos usados pelo suplemento

Adicione código para a classe de ThisAddIn para inicializar o suplemento quando é carregada, e para limpar os recursos usados pelo suplemento quando é descarregada.Você inicializa o suplemento configurando um manipulador de eventos para o evento de NewInspector e passando as mensagens de email existentes para este manipulador de eventos.Quando o suplemento é descarregado, desanexe o manipulador de eventos e limpar os objetos usados pelo suplemento.

Para inicializar e limpar os recursos usados pelo suplemento

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

  2. Adicione as seguintes declarações da classe ThisAddIn :

    • O campo de inspectorWrappersValue contém qualquer Inspector e objetos de InspectorWrapper que são gerenciados pelo suplemento.

    • O campo de inspectors mantém uma referência à coleção do windows de inspector na instância atual do Outlook.Essa referência impede que o coletor de lixo libere memória que contém o manipulador de eventos para o evento de NewInspector , que você 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 método de ThisAddIn_Startup com o código a seguir.Esse código anexa um manipulador de eventos para o evento de NewInspector , e passa cada objeto existente de Inspector para o manipulador de eventos.Se o usuário carrega o suplemento após Outlook já está em execução, o suplemento usa essas informações para criar os painéis de tarefa personalizada 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 método de ThisAddIn_ShutDown com o código a seguir.Esse código dispara o manipulador de eventos de NewInspector e limpa os objetos usados pelo suplemento.

    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 manipulador de eventos de NewInspector a classe de ThisAddIn .Se novo Inspector contém uma mensagem de email, o método cria uma instância de um novo objeto de InspectorWrapper para gerenciar a relação entre a mensagem de email e o painel de tarefas correspondente.

    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 propriedade a seguir para a classe de ThisAddIn .Essa propriedade expõe o campo particular de inspectorWrappersValue ao código fora da classe de ThisAddIn .

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

Ponto de Verificação

Compile o projeto garantir que compila sem erros.

Para criar seu projeto

  • Em Gerenciador de Soluções, clique com o botão direito do mouse no projeto de OutlookMailItemTaskPane e clique em Compilar.Verifique se o projeto compila sem erros.

Sincronizando o botão de alternância de fita com o painel de tarefa personalizada

O botão de alternância aparecerá seja pressionado no painel de tarefas quando é visível, e ele aparecerá não seja pressionado no painel de tarefas quando é oculto.Para sincronizar o estado do botão com o painel de tarefa personalizada, modifique o manipulador de eventos de Click de botão de alternância.

Para sincronizar o painel de tarefa customizada com o botão de alternância

  1. Em o designer de fita, clique duas vezes no botão de alternância de Mostrar Painel de Tarefas .

    O Visual Studio gera automaticamente um manipulador de eventos chamado toggleButton1_Click, que manipula o evento de Click de botão de alternância.Visual Studio também abre o arquivo de ManageTaskPaneRibbon.cs ou de ManageTaskPaneRibbon.vb no editor de códigos.

  2. Adicione as instruções a seguir à parte superior do arquivo de ManageTaskPaneRibbon.cs ou de ManageTaskPaneRibbon.vb .

    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. Substitua o manipulador de eventos de toggleButton1_Click com o código a seguir.Quando o usuário clica no botão de alternância, oculta de esse método ou exibe o painel de tarefa personalizada que está associado com a janela atual de inspector.

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

Testar o projeto.

Quando você iniciar a depuração do projeto, Outlook abre e o suplemento é carregado.O suplemento exibe uma instância única do painel de tarefa customizada com cada mensagem de email que é aberta.Criar várias novas mensagens de email para testar o código.

para testar o suplemento

  1. Pressione F5.

  2. Em o Outlook, clique Novo para criar uma nova mensagem de email.

  3. Em fita de mensagem, clique na guia de Suplementos , clique no botão de Mostrar Painel de Tarefas .

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

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

  5. Feche o painel de tarefas.

    Verifique se o estado do botão de Mostrar Painel de Tarefas muda de modo que é pressionado não.

  6. Clique no botão de Mostrar Painel de Tarefas novamente.

    Verifique se o painel de tarefas, e abra a caixa de texto ainda contém o primeiro painel de tarefas de cadeia de caracteres.

  7. Em o Outlook, clique Novo para criar uma segunda mensagem de email.

  8. Em fita de mensagem, clique na guia de Suplementos , clique no botão de Mostrar Painel de Tarefas .

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

  9. Em o 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 que está associado com esta mensagem de email ainda exibe o primeiro painel de tarefas na caixa de texto.

Este suplemento também trata cenários mais avançados que você pode tentar.Por exemplo, você pode testar o comportamento para exibir email usando botões de Próximo Item e de Item Anterior .Você também pode testar o comportamento quando você descarregar o suplemento, abrindo várias mensagens de email, e depois recarregue o suplemento.

Próximas etapas

Você pode aprender mais sobre como criar os painéis de tarefa personalizada de esses tópicos:

Consulte também

Tarefas

Como: adiciona um painel de tarefas personalizado a um aplicativo

Passo a passo: Automatizando um aplicativo a partir de um painel de tarefas personalizado

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

Conceitos

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

Outros recursos

Painéis de tarefas personalizados

Visão geral da faixa de opções

Visão geral sobre o modelo de objeto do Outlook