Procedura dettagliata: visualizzazione dei riquadri attività personalizzati con messaggi di posta elettronica in Outlook
In questa procedura dettagliata viene spiegato come visualizzare un'istanza univoca di un riquadro attività personalizzato con ogni messaggio di posta elettronica creato o aperto.Gli utenti possono visualizzare o nascondere il riquadro attività personalizzato utilizzando un pulsante sulla barra multifunzione di ogni messaggio di posta elettronica.
Si applica a: le informazioni fornite in questo argomento sono valide per i progetti a livello di applicazione per Outlook 2013 e Outlook 2010. Per ulteriori informazioni, vedere Funzionalità disponibili in base ai tipi di progetto e applicazioni di Office.
Per visualizzare un riquadro attività personalizzato con più finestre degli elenchi di cartelle o dei controlli, è necessario creare un'istanza del riquadro attività personalizzato per ogni finestra che viene aperta.Per ulteriori informazioni sul comportamento dei riquadri attività personalizzati nelle finestre di Outlook, vedere Riquadri attività personalizzati.
[!NOTA]
In questa procedura dettagliata viene spiegato il codice del componente aggiuntivo in piccole sezioni per rendere più facile la discussione della logica associata al codice.
In questa procedura dettagliata vengono illustrate le attività seguenti:
Progettazione dell'interfaccia utente (UI) del riquadro attività personalizzato.
Creazione di un'interfaccia utente della barra multifunzione personalizzata.
Visualizzazione dell'interfaccia utente della barra multifunzione personalizzata con i messaggi di posta elettronica.
Creazione di una classe per gestire le finestre di controllo e i riquadri attività personalizzati.
Inizializzazione e pulizia delle risorse utilizzate dal componente aggiuntivo.
Sincronizzazione dell'interruttore della barra multifunzione con il riquadro attività personalizzato.
[!NOTA]
Il computer potrebbe mostrare nomi o percorsi diversi per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti.Questi elementi sono determinati dall'edizione di Visual Studio in uso e dalle impostazioni utilizzate.Per ulteriori informazioni, vedere Impostazioni di Visual Studio.
Prerequisiti
Per completare la procedura dettagliata, è necessario disporre dei componenti seguenti:
-
Una versione di Visual Studio 2012 che include gli strumenti per sviluppatori di Microsoft Office. Per ulteriori informazioni, vedere [Configurazione di un computer per sviluppare soluzioni Office](bb398242\(v=vs.110\).md).
- Microsoft Outlook 2013 o Microsoft Outlook 2010.
Per una dimostrazione video correlata, vedere Ricerca per categorie: Utilizzo dei riquadri attività in Outlook.
Creazione del progetto
I riquadri attività personalizzati sono implementati nei componenti aggiuntivi a livello di applicazione.Creare innanzitutto un progetto componente aggiuntivo per Outlook.
Per creare un nuovo progetto
Creare un progetto Componente aggiuntivo per Outlook con il nome OutlookMailItemTaskPane.Utilizzare il modello di progetto Componente aggiuntivo per Outlook.Per ulteriori informazioni, vedere Procedura: creare progetti di Office in Visual Studio.
In Visual Studio verrà aperto il file di codice ThisAddIn.cs o ThisAddIn.vb e il progetto OutlookMailItemTaskPane verrà aggiunto in Esplora soluzioni.
Progettazione dell'interfaccia utente del riquadro attività personalizzato
Non è disponibile alcuna finestra di progettazione visiva per i riquadri attività personalizzati, ma è possibile progettare un controllo utente con l'interfaccia utente desiderata.Il riquadro attività personalizzato in questo componente aggiuntivo ha un'interfaccia utente semplice contenente un controllo TextBox.Più avanti nella procedura dettagliata tale controllo utente verrà aggiunto al riquadro attività personalizzato.
Per progettare l'interfaccia utente del riquadro attività personalizzato
Fare clic sul progetto OutlookMailItemTaskPane in Esplora soluzioni.
Scegliere Aggiungi controllo utente dal menu Progetto.
Nella finestra di dialogo Aggiungi nuovo elemento modificare il nome del controllo utente in TaskPaneControl e scegliere Aggiungi.
Il controllo utente verrà visualizzato nella finestra di progettazione.
Trascinare un controllo TextBox nel controllo utente dalla scheda Controlli comuni della Casella degli strumenti.
Progettazione dell'interfaccia utente della barra multifunzione
Uno degli obiettivi di questo componente aggiuntivo consiste nell'offrire agli utenti un modo per nascondere o visualizzare il riquadro attività personalizzato dalla barra multifunzione di ogni messaggio di posta elettronica.Per fornire l'interfaccia utente, creare un'interfaccia utente della barra multifunzione personalizzata che visualizzi un interruttore che gli utenti possono selezionare per visualizzare o nascondere il riquadro attività personalizzato.
Per creare un'interfaccia utente della barra multifunzione personalizzata
Scegliere Aggiungi nuovo elemento dal menu Progetto.
Nella finestra di dialogo Aggiungi nuovo elemento selezionare Barra multifunzione (finestra di progettazione visiva).
Modificare il nome della nuova barra multifunzione in ManageTaskPaneRibbon, quindi fare clic su Aggiungi.
Viene visualizzato il file ManageTaskPaneRibbon.cs o ManageTaskPaneRibbon.vb nella finestra di progettazione della barra multifunzione con una scheda e un gruppo predefiniti.
Fare clic su group1 nella finestra di progettazione della barra multifunzione.
Nella finestra Proprietà impostare la proprietà Label su Gestione riquadro attività.
Dalla scheda Controlli barra multifunzione di Office di Casella degli strumenti, trascinare un controllo ToggleButton sul gruppo Gestione riquadro attività.
Fare clic su toggleButton1.
Nella finestra Proprietà impostare la proprietà Label su Mostra riquadro attività.
Visualizzare l'interfaccia utente della barra multifunzione personalizzata con i messaggi di posta elettronica
Il riquadro attività personalizzato che si crea in questa procedura dettagliata è progettato per essere visualizzato solo nelle finestre di controllo che contengono messaggi di posta elettronica.Di conseguenza, impostare le proprietà per visualizzare l'interfaccia utente della barra multifunzione personalizzata solo con queste finestre.
Per visualizzare l'interfaccia utente della barra multifunzione personalizzata con i messaggi di posta elettronica
Nella finestra di progettazione della barra multifunzione, fare clic sulla barra multifunzione ManageTaskPaneRibbon.
Nella finestra Proprietà, fare clic sull'elenco a discesa accanto a RibbonType e selezionare Microsoft.Outlook.Mail.Compose e Microsoft.Outlook.Mail.Read.
Creazione di una classe per gestire le finestre di controllo e i riquadri attività personalizzati
In diversi casi, il componente aggiuntivo deve identificare quale riquadro attività personalizzato è associato a un messaggio di posta elettronica specifico.Tali casi includono:
Quando l'utente chiude un messaggio di posta elettronica.In questo caso, il componente aggiuntivo deve rimuovere il riquadro attività personalizzato corrispondente per assicurare che le risorse utilizzate dal componente aggiuntivo siano pulite correttamente.
Quando l'utente chiude il riquadro attività personalizzato.In questo caso, il componente aggiuntivo deve aggiornare lo stato dell'interruttore sulla barra multifunzione del messaggio di posta elettronica.
Quando l'utente fa clic sull'interruttore della barra multifunzione.In questo caso, il componente aggiuntivo deve nascondere o visualizzare il riquadro attività corrispondente.
Per consentire al componente aggiuntivo di tenere traccia del riquadro attività personalizzato associato a ogni messaggio di posta elettronica aperto, creare una classe personalizzata che esegue il wrapping di coppie di oggetti Inspector e CustomTaskPane.Questa classe crea un nuovo oggetto riquadro attività personalizzato per ogni messaggio di posta elettronica ed elimina il riquadro attività personalizzato quando il messaggio di posta elettronica corrispondente viene chiuso.
Per creare una classe per gestire le finestre di controllo e i riquadri attività personalizzati
In Esplora soluzioni fare clic con il pulsante destro del mouse sul file ThisAddIn.cs o ThisAddIn.vb, quindi scegliere Visualizza codice.
Aggiungere le seguenti istruzioni all'inizio del file.
Imports System.Collections.Generic Imports Microsoft.Office.Tools Imports Office = Microsoft.Office.Core Imports Outlook = Microsoft.Office.Interop.Outlook
using Microsoft.Office.Tools;
Aggiungere il codice seguente al file ThisAddIn.cs o ThisAddIn.vb, fuori della classe ThisAddIn (per Visual C#, aggiungere questo codice nello spazio dei nomi OutlookMailItemTaskPane).La classe InspectorWrapper gestisce una coppia di oggetti Inspector e CustomTaskPane.La definizione di questa classe verrà completata nei passaggi seguenti.
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;
Aggiungere il costruttore riportato di seguito dopo il codice aggiunto al passaggio precedente.Questo costruttore consente di creare e inizializzare un nuovo riquadro attività personalizzato associato all'oggetto Inspector passato.In C# il costruttore consente anche di associare i gestori all'evento Close dell'oggetto Inspector e all'evento VisibleChanged dell'oggetto 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); }
Aggiungere il metodo riportato di seguito dopo il codice aggiunto al passaggio precedente.Questo metodo è un gestore eventi per l'evento VisibleChanged dell'oggetto CustomTaskPane contenuto nella classe InspectorWrapper.Questo codice aggiorna lo stato dell'interruttore quando l'utente apre o chiude il riquadro attività personalizzato.
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; }
Aggiungere il metodo riportato di seguito dopo il codice aggiunto al passaggio precedente.Questo metodo è un gestore eventi per l'evento Close dell'oggetto Inspector che contiene il messaggio di posta elettronica corrente.Il gestore eventi libera le risorse quando il messaggio di posta elettronica viene chiuso.Il gestore eventi inoltre rimuove il riquadro attività personalizzato corrente dalla raccolta CustomTaskPanes.In tal modo si evitano più istanze del riquadro attività personalizzato quando il successivo messaggio di posta elettronica viene aperto.
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; }
Aggiungere il codice riportato di seguito dopo il codice aggiunto al passaggio precedente.Più avanti in questa procedura, questa proprietà verrà chiamata da un metodo nell'interfaccia utente della barra multifunzione personalizzata per visualizzare o nascondere il riquadro attività personalizzato.
Public ReadOnly Property CustomTaskPane() As CustomTaskPane Get Return taskPane End Get End Property End Class
public CustomTaskPane CustomTaskPane { get { return taskPane; } } }
Inizializzazione e pulizia delle risorse utilizzate dal componente aggiuntivo
Aggiungere il codice alla classe ThisAddIn per inizializzare il componente aggiuntivo quando viene caricato e pulire le risorse utilizzate dal componente aggiuntivo quando viene scaricato.Il componente aggiuntivo viene inizializzato configurando un gestore eventi per l'evento NewInspector e passando tutti i messaggi di posta elettronica esistenti a questo gestore eventi.Quando il componente aggiuntivo viene scaricato, il gestore eventi viene disconnesso e gli oggetti utilizzati dal componente aggiuntivo vengono puliti.
Per inizializzare e pulire le risorse utilizzate dal componente aggiuntivo
Nel file ThisAddIn.cs o ThisAddIn.vb, trovare la definizione della classe ThisAddIn.
Aggiungere le seguenti dichiarazioni alla classe ThisAddIn:
Il campo inspectorWrappersValue contiene tutti gli oggetti Inspector e InspectorWrapper gestiti dal componente aggiuntivo.
Il campo inspectors gestisce un riferimento alla raccolta di finestre di controllo nell'istanza Outlook corrente.Questo riferimento impedisce al Garbage Collector di liberare la memoria che contiene il gestore eventi per l'evento NewInspector che verrà dichiarato nel prossimo passaggio.
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;
Sostituire il metodo ThisAddIn_Startup con il codice seguente.Il codice collega un gestore eventi all'evento NewInspector e passa ogni oggetto Inspector esistente al gestore eventi.Se l'utente carica il componente aggiuntivo con Outlook in esecuzione, il componente aggiuntivo utilizza queste informazioni per creare riquadri attività personalizzati per tutti i messaggi di posta elettronica già aperti.
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); } }
Sostituire il metodo ThisAddIn_ShutDown con il codice seguente.Questo codice disconnette il gestore eventi NewInspector e pulisce gli oggetti utilizzati dal componente aggiuntivo.
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; }
Aggiungere il seguente gestore eventi NewInspector alla classe ThisAddIn.Quando un nuovo Inspector contiene un messaggio di posta elettronica, il metodo crea l'istanza di un nuovo oggetto InspectorWrapper per gestire la relazione tra il messaggio di posta elettronica e il riquadro attività corrispondente.
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)); } }
Aggiungere la seguente proprietà alla classe ThisAddIn.Questa proprietà espone il campo inspectorWrappersValue privato al codice fuori dalla classe 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; } }
Verifica
Compilare il progetto per verificare che l'operazione venga completata senza errori.
Per compilare il progetto
- Fare clic con il pulsante destro del mouse sul progetto OutlookMailItemTaskPane in Esplora soluzioni, quindi scegliere Compila.Verificare che il progetto venga compilato senza errori.
Sincronizzazione dell'interruttore della barra multifunzione con il riquadro attività personalizzato
L'interruttore risulterà premuto quando il riquadro attività è visibile e non premuto quando il riquadro attività è nascosto.Per sincronizzare lo stato del pulsante con il riquadro attività personalizzato, modificare il gestore eventi Click dell'interruttore.
Per sincronizzare l'interruttore con il riquadro attività personalizzato
Nella finestra di progettazione della barra multifunzione, fare doppio clic sull'interruttore Mostra riquadro attività.
In Visual Studio viene automaticamente generato un gestore eventi denominato toggleButton1_Click che gestisce l'evento Click dell'interruttore.In Visual Studio viene anche aperto il file ManageTaskPaneRibbon.cs o ManageTaskPaneRibbon.vb nell'editor del codice.
Aggiungere l'istruzione seguente all'inizio del file ManageTaskPaneRibbon.cs o 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;
Sostituire il gestore eventi toggleButton1_Click con il codice riportato di seguito.Quando l'utente fa clic sull'interruttore, il metodo visualizza o nasconde il riquadro attività personalizzato associato alla finestra del controllo corrente.
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; } }
Verifica del progetto
Quando si inizia il debug del progetto, Outlook viene aperto e il componente aggiuntivo viene caricato.Il componente aggiuntivo visualizza un'istanza univoca del riquadro attività personalizzato con ogni messaggio di posta elettronica aperto.Creare molti messaggi di posta elettronica nuovi per verificare il codice.
Per verificare il componente aggiuntivo
Premere F5.
In Outlook, fare clic su Nuovo per creare un nuovo messaggio di posta elettronica.
Nella barra multifunzione del messaggio di posta elettronica, selezionare la scheda Componenti aggiuntivi e fare clic sul pulsante Mostra riquadro attività.
Verificare che un riquadro attività con il titolo My task pane sia visualizzato con il messaggio di posta elettronica.
Nel riquadro attività, digitare First task pane nella casella di testo.
Chiudere il riquadro attività.
Verificare che lo stato del pulsante Mostra riquadro attività cambi in modo da non risultare premuto.
Fare clic nuovamente sul pulsante Mostra riquadro attività.
Verificare che il riquadro attività si apra e che la casella di testo contenga ancora la stringa First task pane.
In Outlook, fare clic su Nuovo per creare un secondo messaggio di posta elettronica.
Nella barra multifunzione del messaggio di posta elettronica, selezionare la scheda Componenti aggiuntivi e fare clic sul pulsante Mostra riquadro attività.
Verificare che un riquadro attività con il titolo My task pane sia visualizzato con il messaggio di posta elettronica e che la casella di testo nel riquadro attività sia vuota.
Nel riquadro attività, digitare Second task pane nella casella di testo.
Impostare lo stato attivo sul primo messaggio di posta elettronica.
Verificare che il riquadro attività associato al messaggio di posta elettronica visualizzi ancora First task pane nella casella di testo.
Questo componente aggiuntivo gestisce inoltre scenari più avanzati che si possono provare.Ad esempio, è possibile verificare il comportamento quando si visualizzano i messaggi di posta elettronica utilizzando i pulsanti Elemento successivo ed Elemento precedente.È anche possibile verificare il comportamento quando si scarica il componente aggiuntivo, si aprono molti messaggi di posta elettronica e quindi si ricarica il componente aggiuntivo.
Passaggi successivi
Gli argomenti elencati di seguito contengono ulteriori informazioni sulla creazione di riquadri attività personalizzati:
Creare un riquadro attività personalizzato in un componente aggiuntivo per un'applicazione diversa.Per ulteriori informazioni sulle applicazioni che supportano i riquadri attività personalizzati, vedere Riquadri attività personalizzati.
Automatizzare un'applicazione di Microsoft Office mediante un riquadro attività personalizzato.Per ulteriori informazioni, vedere Procedura dettagliata: automazione di un'applicazione da un riquadro attività personalizzato.
Creare un pulsante della barra multifunzione in Excel che può essere utilizzato per nascondere o visualizzare un riquadro attività personalizzato.Per ulteriori informazioni, vedere Procedura dettagliata: sincronizzazione di un riquadro attività personalizzato con una barra multifunzione.
Vedere anche
Attività
Procedura: aggiungere un riquadro attività personalizzato a un'applicazione
Procedura dettagliata: automazione di un'applicazione da un riquadro attività personalizzato
Concetti
Accesso alla barra multifunzione in fase di esecuzione
Altre risorse
Riquadri attività personalizzati