Procedura dettagliata: Visualizzare riquadri attività personalizzati con messaggi di posta elettronica in Outlook

Questa procedura dettagliata illustra 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 usando un pulsante nella barra multifunzione di ogni messaggio di posta elettronica.

Si applica a: le informazioni contenute in questo argomento si applicano ai progetti di componente aggiuntivo VSTO per Outlook. Per altre informazioni, vedere Funzionalità disponibili per app Office lication e tipo di progetto.

Per visualizzare un riquadro attività personalizzato con più finestre di esplorazione o di controllo, è necessario creare un'istanza del riquadro attività personalizzato per ogni finestra aperta. Per altre informazioni sul comportamento dei riquadri attività personalizzati nelle finestre di Outlook, vedere Riquadri attività personalizzati.

Nota

Questa procedura dettagliata presenta il codice del componente aggiuntivo VSTO in sezioni di piccole dimensioni per semplificare la descrizione della logica su cui si basa il codice.

In questa procedura dettagliata sono illustrati i task seguenti:

  • Progettazione dell'interfaccia utente del riquadro attività personalizzato.

  • Creazione di un'interfaccia utente della barra multifunzione personalizzata.

  • Visualizzazione dell'interfaccia utente personalizzata della barra multifunzione con messaggi di posta elettronica.

  • Creazione di una classe per la gestione delle finestre di controllo e dei riquadri attività personalizzati.

  • Inizializzazione e pulizia delle risorse usate dal componente aggiuntivo VSTO.

  • Sincronizzazione dell'interruttore della barra multifunzione con il riquadro attività personalizzato.

Nota

I nomi o i percorsi visualizzati per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti potrebbero essere diversi nel computer in uso. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per altre informazioni, vedere Personalizzare l'IDE di Visual Studio.

Prerequisiti

Per completare questa procedura dettagliata, è necessario disporre dei componenti seguenti:

Creare il progetto

I riquadri attività personalizzati vengono implementati nei componenti aggiuntivi VSTO. Per iniziare, creare un progetto di componente aggiuntivo VSTO per Outlook.

Per creare un nuovo progetto

  1. Creare un progetto di componente aggiuntivo di Outlook denominato OutlookMailItemTaskPane. Usare il modello di progetto per il componente aggiuntivo di Outlook . Per altre informazioni, vedere Procedura: Creare progetti di Office in Visual Studio.

    Visual Studio apre il file di codice ThisAddIn.cs o ThisAddIn.vb e aggiunge il progetto OutlookMailItemTaskPane a Esplora soluzioni.

Progettare l'interfaccia utente del riquadro attività personalizzato

Non sono presenti finestre di visualizzazione 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 VSTO ha un'interfaccia utente semplice che contiene un controllo TextBox . Più avanti in questa procedura dettagliata il controllo utente verrà aggiunto al riquadro attività personalizzato.

Per progettare l'interfaccia utente del riquadro attività personalizzato

  1. In Esplora soluzionifare clic sul progetto OutlookMailItemTaskPane .

  2. Nel menu Progetto fare clic su Aggiungi controllo utente.

  3. Nella finestra di dialogo Aggiungi nuovo elemento modificare il nome del controllo utente in TaskPaneControl, quindi fare clic su Aggiungi.

    Il controllo utente viene visualizzato nella finestra di progettazione.

  4. Nella scheda Controlli comuni della casella degli strumentitrascinare un controllo TextBox nel controllo utente.

Progettare l'interfaccia utente della barra multifunzione

Uno degli obiettivi di questo componente aggiuntivo VSTO 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 visualizza un interruttore che gli utenti possono selezionare per visualizzare o nascondere il riquadro attività personalizzato.

Per creare un'interfaccia utente della barra multifunzione personalizzata

  1. Dal menu Progetto fare clic su Aggiungi nuovo elemento.

  2. Nella finestra di dialogo Aggiungi nuovo elemento selezionare Barra multifunzione (finestra di progettazione visiva).

  3. Modificare il nome della nuova barra multifunzione in ManageTaskPaneRibbone fare clic su Aggiungi.

    Il file ManageTaskPaneRibbon.cs o ManageTaskPaneRibbon.vb si apre nella finestra di progettazione della barra multifunzione e visualizza una scheda e un gruppo predefiniti.

  4. Nella finestra di progettazione della barra multifunzione fare clic su group1.

  5. Nella finestra Proprietà impostare la proprietà Label su Task Pane Manager.

  6. Nella scheda Controlli barra multifunzione di Office della casella degli strumentitrascinare un controllo ToggleButton nel gruppo Task Pane Manager .

  7. Fare clic su toggleButton1.

  8. Nella finestra Proprietà impostare la proprietà Label su Mostra riquadro attività.

Visualizzare l'interfaccia utente personalizzata della barra multifunzione con messaggi di posta elettronica

Il riquadro attività personalizzato creato in questa procedura dettagliata è progettato per essere visualizzato solo nelle finestre di controllo che contengono i messaggi di posta elettronica. Quindi, impostare le proprietà per visualizzare l'interfaccia utente della barra multifunzione personalizzata solo con queste finestre.

Per visualizzare l'interfaccia utente personalizzata della barra multifunzione con messaggi di posta elettronica

  1. Nella finestra di progettazione della barra multifunzione fare clic sulla barra multifunzione ManageTaskPaneRibbon .

  2. Nella finestra Proprietà fare clic su sull'elenco a discesa accanto a RibbonType, quindi selezionare Microsoft.Outlook.Mail.Compose e Microsoft.Outlook.Mail.Read.

Creare una classe per gestire le finestre di controllo e i riquadri attività personalizzati

Esistono diversi casi in cui il componente aggiuntivo VSTO deve identificare il riquadro attività personalizzato associato a un messaggio di posta elettronica specifico. ad esempio:

  • Quando l'utente chiude un messaggio di posta elettronica. In questo caso, il componente aggiuntivo VSTO deve rimuovere il riquadro attività personalizzato corrispondente per assicurare che le risorse usate dal componente aggiuntivo VSTO vengano pulite correttamente.

  • Quando l'utente chiude il riquadro attività personalizzato. In questo caso, il componente aggiuntivo VSTO deve aggiornare lo stato dell'interruttore sulla barra multifunzione del messaggio di posta elettronica.

  • Quando l'utente fa clic sull'interruttore sulla barra multifunzione. In questo caso, il componente aggiuntivo VSTO deve nascondere o visualizzare il riquadro attività corrispondente.

    Per consentire al componente aggiuntivo VSTO 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 Inspector oggetti 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

  1. In Esplora soluzioni, fare clic con il pulsante destro del mouse sul file ThisAddIn.cs o ThisAddIn.vb , quindi fare clic su Visualizza codice.

  2. Aggiungere le istruzioni seguenti all'inizio del file.

    using Microsoft.Office.Tools;
    
  3. Aggiungere il codice seguente al file ThisAddIn.cs o ThisAddIn.vb , al di fuori della classe ThisAddIn (per Visual C#, aggiungere questo codice all'interno dello spazio dei nomi OutlookMailItemTaskPane ). La classe InspectorWrapper gestisce una coppia di oggetti Inspector e CustomTaskPane . La definizione della classe verrà completata nei passaggi successivi.

    public class InspectorWrapper
    {
        private Outlook.Inspector inspector;
        private CustomTaskPane taskPane;
    
  4. Aggiungere il costruttore seguente dopo il codice aggiunto nel passaggio precedente. Il costruttore crea e inizializza un nuovo riquadro attività personalizzato associato all'oggetto Inspector passato. In C# il costruttore collega anche i gestori eventi all'evento Close dell'oggetto Inspector e all'evento VisibleChanged dell'oggetto CustomTaskPane .

    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. Aggiungere il metodo seguente dopo il codice aggiunto nel 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.

    void TaskPane_VisibleChanged(object sender, EventArgs e)
    {
        Globals.Ribbons[inspector].ManageTaskPaneRibbon.toggleButton1.Checked = 
            taskPane.Visible;
    }
    
  6. Aggiungere il metodo seguente dopo il codice aggiunto nel 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 rimuove anche il riquadro attività personalizzato corrente dalla raccolta CustomTaskPanes . Ciò consente di evitare più istanze del riquadro attività personalizzato all'apertura del messaggio di posta elettronica successivo.

    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. Aggiungere il codice seguente dopo il codice aggiunto nel passaggio precedente. Più avanti in questa procedura dettagliata, questa proprietà verrà chiamata da un metodo nell'interfaccia utente della barra multifunzione personalizzata per visualizzare o nascondere il riquadro attività personalizzato.

        public CustomTaskPane CustomTaskPane
        {
            get
            {
                return taskPane;
            }
        }
    }
    

Inizializzare e pulire le risorse usate dal componente aggiuntivo

Aggiungere il codice alla classe ThisAddIn per inizializzare il componente aggiuntivo VSTO quando viene caricato e per pulire le risorse usate dal componente aggiuntivo VSTO quando viene scaricato. Inizializzare il componente aggiuntivo VSTO 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 VSTO viene scaricato, rimuovere il gestore eventi e pulire gli oggetti usati dal componente aggiuntivo VSTO.

Per inizializzare e pulire le risorse usate dal componente aggiuntivo VSTO

  1. Nel file ThisAddIn.cs o ThisAddIn.vb individuare la definizione della classe ThisAddIn .

  2. Aggiungere le seguenti dichiarazioni alla classe ThisAddIn :

    • Il campo inspectorWrappersValue contiene tutti gli oggetti Inspector e InspectorWrapper gestiti dal componente aggiuntivo VSTO.

    • 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 passaggio successivo.

      private Dictionary<Outlook.Inspector, InspectorWrapper> inspectorWrappersValue =
          new Dictionary<Outlook.Inspector, InspectorWrapper>();
      private Outlook.Inspectors inspectors;
      

  3. Sostituire il metodo ThisAddIn_Startup con il codice seguente. Questo codice collega un gestore eventi all'evento NewInspector e passa tutti gli oggetti Inspector esistenti al gestore eventi. Se l'utente carica il componente aggiuntivo VSTO dopo che Outlook è già in esecuzione, il componente aggiuntivo VSTO usa queste informazioni per creare riquadri attività personalizzati per tutti i messaggi di posta elettronica già aperti.

    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. Sostituire il metodo ThisAddIn_ShutDown con il codice seguente. Questo codice rimuove il gestore eventi NewInspector e pulisce gli oggetti usati dal componente aggiuntivo VSTO.

    private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
    {
        inspectors.NewInspector -=
            new Outlook.InspectorsEvents_NewInspectorEventHandler(
            Inspectors_NewInspector);
        inspectors = null;
        inspectorWrappersValue = null;
    }
    
  5. Aggiungere il gestore eventi NewInspector seguente alla classe ThisAddIn . Se un nuovo Inspector contiene un messaggio di posta elettronica, il metodo crea un'istanza di un nuovo InspectorWrapper oggetto per gestire la relazione tra il messaggio di posta elettronica e il riquadro attività corrispondente.

    void Inspectors_NewInspector(Outlook.Inspector Inspector)
    {
        if (Inspector.CurrentItem is Outlook.MailItem)
        {
            inspectorWrappersValue.Add(Inspector, new InspectorWrapper(Inspector));
        }
    }
    
  6. Aggiungere la proprietà seguente alla classe ThisAddIn . Questa proprietà espone il campo inspectorWrappersValue privato al codice esterno alla classe ThisAddIn .

    public Dictionary<Outlook.Inspector, InspectorWrapper> InspectorWrappers
    {
        get
        {
            return inspectorWrappersValue;
        }
    }
    

Checkpoint

Compilare il progetto per verificare l'assenza di errori.

Per compilare il progetto

  1. In Esplora soluzionifare clic con il pulsante destro del mouse sul progetto OutlookMailItemTaskPane , quindi fare clic su Compila. Verificare che il progetto venga compilato senza errori.

Sincronizzare l'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 dell'interruttore con il riquadro attività personalizzato, modificare il gestore eventi Click dell'interruttore.

Per sincronizzare il riquadro attività personalizzato con l'interruttore

  1. Nella finestra di progettazione della barra multifunzione fare doppio clic sull'interruttore Mostra riquadro attività .

    Visual Studio genera automaticamente un gestore eventi denominato toggleButton1_Click, che gestisce l'evento Click dell'interruttore. Visual Studio apre anche il file ManageTaskPaneRibbon.cs o ManageTaskPaneRibbon.vb nell'editor di codice.

  2. Aggiungere le istruzioni seguenti nella parte superiore del file ManageTaskPaneRibbon.cs o ManageTaskPaneRibbon.vb .

    using Outlook = Microsoft.Office.Interop.Outlook;
    using Microsoft.Office.Tools;
    
  3. Sostituire il gestore eventi toggleButton1_Click con il codice seguente. Quando un utente fa clic sull'interruttore, questo metodo nasconde o visualizza il riquadro attività personalizzato associato alla finestra di controllo corrente.

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

Testare il progetto

Quando si avvia il debug del progetto, viene aperto Outlook e viene caricato il componente aggiuntivo VSTO. Il componente aggiuntivo VSTO visualizza un'istanza univoca del riquadro attività personalizzato con ogni messaggio di posta elettronica aperto. Creare diversi nuovi messaggi di posta elettronica per testare il codice.

Per testare il componente aggiuntivo VSTO

  1. Premere F5.

  2. In Outlook fare clic su Nuovo per creare un nuovo messaggio di posta elettronica.

  3. Sulla barra multifunzione del messaggio di posta elettronica fare clic sulla scheda Componenti aggiuntivi e quindi sul pulsante Mostra riquadro attività.

    Verificare che venga visualizzato un riquadro attività con il titolo My task pane (Il mio riquadro attività) con il messaggio di posta elettronica.

  4. Nella casella di testo del riquadro attività digitare First task pane .

  5. Chiudi il riquadro dell'attività.

    Verificare che lo stato del pulsante Mostra riquadro attività sia cambiato in modo che non venga più premuto.

  6. Fare di nuovo clic 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.

  7. In Outlook fare clic su Nuovo per creare un secondo messaggio di posta elettronica.

  8. Sulla barra multifunzione del messaggio di posta elettronica fare clic sulla scheda Componenti aggiuntivi e quindi sul pulsante Mostra riquadro attività.

    Verificare che un riquadro attività con il titolo Il riquadro attività sia visualizzato con il messaggio di posta elettronica e che la casella di testo in questo riquadro attività sia vuota.

  9. Nella casella di testo del riquadro attività digitare Second task pane .

  10. Impostare lo stato attivo sul primo messaggio di posta elettronica.

    Verificare che il riquadro attività associato a questo messaggio di posta elettronica visualizzi ancora il riquadro Attività Primo nella casella di testo.

    Il componente aggiuntivo VSTO gestisce anche scenari più avanzati che è possibile provare. Ad esempio, è possibile testare il comportamento quando si visualizzano i messaggi di posta elettronica usando i pulsanti Elemento successivo e Elemento precedente. È anche possibile testare il comportamento quando si scarica il componente aggiuntivo VSTO, aprire diversi messaggi di posta elettronica e quindi ricaricare il componente aggiuntivo VSTO.

Passaggi successivi

Per altre informazioni su come creare i riquadri attività personalizzati, vedere gli argomenti seguenti: