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çã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çã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.
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
Em Gerenciador de Soluções, clique no projeto de OutlookMailItemTaskPane .
No menu Project, clique em Add User Control.
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.
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
No menu Project, clique em Add New Item.
Em a caixa de diálogo de Adicionar novo item , **fita (designer visual)**selecione.
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.
Em o designer de fita, clique group1.
Em a janela de Propriedades , defina a propriedade de Rótulo ao gerenciador do painel de tarefas.
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 .
Clique toggleButton1.
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
Em o designer de fita, clique em. ManageTaskPaneRibbon da fita
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
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.
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;
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;
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); }
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; }
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; }
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
Em o arquivo de ThisAddIn.cs ou de ThisAddIn.vb , localize a definição de classe de ThisAddIn .
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;
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); } }
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; }
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)); } }
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
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.
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;
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
Pressione F5.
Em o Outlook, clique Novo para criar uma nova mensagem de email.
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.
Em o painel de tarefas, digite o primeiro painel de tarefas na caixa de texto.
Feche o painel de tarefas.
Verifique se o estado do botão de Mostrar Painel de Tarefas muda de modo que é pressionado não.
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.
Em o Outlook, clique Novo para criar uma segunda mensagem de email.
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.
Em o painel de tarefas, digite o segundo painel de tarefas na caixa de texto.
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:
Crie um painel de tarefa personalizada em um suplemento para um aplicativo diferente.Para obter mais informações sobre aplicativos que suportam os painéis de tarefa personalizada, consulte Painéis de tarefas personalizados.
Automatizar um aplicativo do Microsoft Office usando um painel de tarefa personalizada.Para obter mais informações, consulte Passo a passo: Automatizando um aplicativo a partir de um painel de tarefas personalizado.
Crie um botão de fita do excel que podem ser usados para ocultar ou exibir um painel de tarefa personalizada.Para obter mais informações, consulte Passo a passo: Sincronizando um painel de tarefas personalizado com o botão da faixa de opções.
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