Procedura dettagliata: importazione di un'area di modulo progettata in Outlook

In questa procedura dettagliata viene illustrato come progettare un'area di modulo in Microsoft Office Outlook e come importare l'area di modulo in un progetto relativo al componente aggiuntivo per Outlook mediante la procedura guidata Nuova area modulo.Progettando l'area di modulo in Outlook, è possibile aggiungere i controlli nativi di Outlook all'area del modulo associata ai dati di Outlook.Dopo avere importato l'area del modulo, è possibile gestire gli eventi di ogni controllo.

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.

In questa procedura dettagliata vengono illustrate le attività seguenti:

  • Progettazione di un'area di modulo utilizzando Progettazione aree di modulo in Outlook.

  • Importazione di un'area di modulo in un progetto di componente aggiuntivo per Outlook

  • Gestione degli eventi dei controlli dell'area di modulo.

[!NOTA]

Nel computer in uso è possibile che vengano visualizzati nomi o percorsi diversi per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. 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).
  • Outlook 2013 o Outlook 2010.

[!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.

Collegamento a video Per una dimostrazione video correlata, vedere la procedura di creazione di aree del form Outlook mediante Visual Studio 2008?.

Progettazione di un'area di modulo utilizzando Progettazione aree di modulo in Outlook

In questo passaggio si progetterà un'area di modulo in Outlook.Quindi l'area di modulo verrà salvata in un percorso facilmente accessibile e importata quindi in Visual Studio.

Questa area del modulo di esempio sostituisce completamente il normale modulo Attività.Fornisce una modalità per registrare lo stato di avanzamento di tutte le attività che devono essere completate prima che l'attività principale possa essere eseguita (attività essenziali).L'area di modulo visualizza un elenco delle attività essenziali e mostra lo stato di completamento di ogni attività nell'elenco.Gli utenti possono aggiungere attività all'elenco e rimuoverle.Inoltre, possono aggiornare lo stato di completamento di ogni attività.

Per progettare un'area di modulo utilizzando Progettazione aree di modulo in Outlook

  1. Avviare Microsoft Office Outlook.

  2. In Outlook, nella scheda Sviluppatore, fare clic Progetta modulo.Per ulteriori informazioni, vedere Procedura: visualizzare la scheda Sviluppo nella barra multifunzione.

  3. Nella finestra Struttura modulo scegliere Attività, quindi Apri.

  4. In Outlook, nella scheda Sviluppatore, nel gruppo Progettazione, scegliere Nuova area modulo.

    Verrà aperta una nuova area di modulo.Se la finestra Selezione campi non viene visualizzata, fare clic su Selezione campi nel gruppo Strumenti.

  5. Trascinare i campi Oggetto% completato dalla finestra Selezione campi all'area di modulo.

  6. Nel gruppo Strumenti fare clic su Strumenti di controllo per aprire la Casella degli strumenti.

  7. Trascinare un'etichetta dalla Casella degli strumenti nell'area di modulo.Posizionare l'etichetta sotto i campi Oggetto e % completato.

  8. Fare clic con il pulsante destro del mouse sull'etichetta, quindi scegliere Proprietà avanzate.

  9. Nella finestra Proprietà impostare la proprietà Caption su L'attività dipende dalle seguenti attività, impostare la proprietà Width su 200, quindi fare clic su Applica.

  10. Trascinare un controllo ListBox dalla Casella degli strumenti nell'area di modulo.Posizionare la casella di riepilogo sotto l'etichetta L'attività dipende dalle seguenti attività.

  11. Selezionare la casella di riepilogo appena aggiunta.

  12. Nella finestra Proprietà impostare Width su 300, quindi fare clic su Applica.

  13. Trascinare un'etichetta dalla Casella degli strumenti nell'area di modulo.Posizionare l'etichetta sotto la casella di riepilogo.

  14. Selezionare l'etichetta appena aggiunta.

  15. Nella finestra Proprietà impostare la proprietà Caption su Selezionare un'attività da aggiungere all'elenco delle attività dipendenti, impostare la proprietà Width su 200, quindi fare clic su Applica.

  16. Trascinare un controllo ComboBox dalla Casella degli strumenti nell'area di modulo.Posizionare la casella combinata sotto l'etichetta Selezionare un'attività da aggiungere all'elenco di attività dipendenti.

  17. Selezionare la casella combinata appena aggiunta.

  18. Nella finestra Proprietà impostare la proprietà Width su 300, quindi fare clic su Applica.

  19. Trascinare un controllo CommandButton dalla Casella degli strumenti all'area di modulo.Posizionare il pulsante di comando accanto alla casella combinata.

  20. Selezionare il pulsante di comando appena aggiunto.

  21. Nella finestra Proprietà impostare la proprietà Name su AddDependentTask, impostare la proprietà Caption su Aggiungere attività dipendente, impostare Width su 100, quindi fare clic su Applica.

  22. In Selezione campi, fare clic su Nuovo.

  23. Nel campo Nome della finestra di dialogo Nuovo campo digitare hiddenField e scegliere OK.

  24. Trascinare il campo hiddenField dalla finestra Selezione campi all'area di modulo.

  25. Nella finestra Proprietà impostare Visible su 0 - False, quindi fare clic su Applica.

  26. In Outlook, nella scheda Sviluppatore, nel gruppo Progettazione, fare clic sul pulsante Salva quindi fare clic Salva area modulo.

    Denominare l'area di modulo TaskFormRegion e salvarla in una directory locale del computer.

    L'area di modulo viene salvata come un file ofs (Outlook Form Storage).L'area del modulo viene salvata con il nome TaskFormRegion.ofs.

  27. Uscire da Outlook.

Creazione di un nuovo progetto di componente aggiuntivo per Outlook

In questo passaggio, verrà creato un progetto di componente aggiuntivo per Outlook.Più avanti in questa procedura, si importerà l'area del modulo nel progetto.

Per creare un nuovo progetto di componente aggiuntivo per Outlook

  1. In Visual Studio creare un progetto relativo al componente aggiuntivo per Outlook con il nome TaskAddIn.

  2. Selezionare Crea directory per soluzione nella finestra di dialogo Nuovo progetto.

  3. Salvare il progetto nella directory di progetto predefinita.

    Per ulteriori informazioni, vedere Procedura: creare progetti di Office in Visual Studio.

Importazione dell'area di modulo

Utilizzare la procedura guidata Nuova area del modulo di Outlook per importare l'area di modulo progettata in Outlook nel progetto di componente aggiuntivo per Outlook.

Per importare l'area di modulo in un progetto di componente aggiuntivo per Outlook

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto TaskAddIn, scegliere Aggiungi, quindi fare clic su Nuovo elemento.

  2. Nel riquadro Modelli selezionare Area del modulo di Outlook, assegnare al file il nome TaskFormRegion e fare clic su Aggiungi.

    Viene avviata la procedura guidata Nuova area del modulo di Outlook.

  3. Nella pagina Selezionare la modalità di creazione dell'area del modulo, scegliere Importa un file OFS (Outlook Form Storage), quindi fare clic su Sfoglia.

  4. Nella finestra di dialogo Percorso del file di area del modulo di Outlook esistente individuare il percorso di TaskFormRegion.ofs, selezionare TaskFormRegion.ofs, fare clic su Apri, quindi su Avanti.

  5. Nella pagina Selezionare il tipo di area del modulo da creare selezionare Sostituzione completa e scegliere Avanti.

    Un'area di modulo sostituzione completa sostituisce l'intero modulo di Outlook.Per ulteriori informazioni sui tipi di area di modulo, vedere Creazione di aree di modulo di Outlook.

  6. Nella pagina Fornire un testo descrittivo e selezionare le preferenze di visualizzazione fare clic su Avanti.

  7. Nella pagina Identificare le classi di messaggi per la visualizzazione dell'area del modulo digitare IPM.Task.TaskFormRegion nel campo Fornire le classi di messaggi per la visualizzazione dell'area del modulo e fare clic su Fine.

    Un file TaskFormRegion.cs o TaskFormRegion.vb viene aggiunto al progetto.

Gestione degli eventi dei controlli dell'area di modulo

Ora che l'area del modulo è nel progetto, è possibile aggiungere il codice che gestisce l'evento Microsoft.Office.Interop.Outlook.OlkCommandButton.Click del pulsante aggiunto all'area del modulo in Outlook.

Inoltre, aggiungere all'evento FormRegionShowing il codice che aggiorna i controlli sull'area del modulo quando l'area del modulo viene visualizzata.

Per gestire gli eventi dei controlli nell'area di modulo

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

    TaskFormRegion.cs o TaskFormRegion.vb viene aperto nell'editor di codice.

  2. Aggiungere il codice seguente alla classe TaskFormRegion.Questo codice popola la casella combinata sull'area di modulo con la riga dell'oggetto di ogni attività dalla cartella delle attività di Outlook.

    Private Sub populateComboBox()
        Dim Application As New Outlook.Application()
        Dim outlookNameSpace As Outlook.NameSpace = _
        Application.GetNamespace("MAPI")
        Dim taskFolder As Outlook.MAPIFolder = _
        outlookNameSpace.GetDefaultFolder _
            (Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderTasks)
        Dim taskItems As Outlook.Items = taskFolder.Items
        Dim task As Outlook.TaskItem
        For Each task In taskItems
            If Not (task.Subject Is Nothing) Then
                comboBox1.AddItem(task.Subject, System.Type.Missing)
            End If
        Next task
        comboBox1.Text = comboBox1.GetItem(0)
    End Sub
    
    private void populateComboBox()
    {
        Outlook.Application Application = new Outlook.Application();
        Outlook.NameSpace outlookNameSpace = Application.GetNamespace("MAPI");
        Outlook.MAPIFolder taskFolder = outlookNameSpace.GetDefaultFolder(
            Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderTasks);
        Outlook.Items taskItems = taskFolder.Items;
        foreach (Outlook.TaskItem task in taskItems)
        {
            if (task.Subject != null)
            {
                comboBox1.AddItem(task.Subject, System.Type.Missing);
            }
        }
        comboBox1.Text = comboBox1.GetItem(0);
    }
    
  3. Aggiungere il codice seguente alla classe TaskFormRegion.Mediante il codice vengono effettuate le seguenti attività:

    • Ricerca Microsoft.Office.Interop.Outlook.TaskItem nella cartella delle attività chiamando il metodo di supporto FindTaskBySubjectName e passando l'oggetto dell'attività desiderata.Nel prossimo passaggio verrà aggiunto il metodo di supporto FindTaskBySubjectName.

    • Aggiunta dei valori Microsoft.Office.Interop.Outlook.TaskItem.Subject e Microsoft.Office.Interop.Outlook.TaskItem.PercentComplete alla casella di riepilogo dell'attività dipendente.

    • Aggiunge l'oggetto dell'attività al campo nascosto sull'area di modulo.Il campo nascosto archivia questi valori come parte dell'elemento Outlook.

    Private Sub AddDependentTask_Click1() Handles addDependentTask.Click
        Dim tempTaskItem As Outlook.TaskItem = FindTaskBySubjectName _
            (comboBox1.Text)
        If Not (tempTaskItem Is Nothing) Then
            Me.listBox1.AddItem(tempTaskItem.PercentComplete.ToString() & _
                "% Complete -- " & tempTaskItem.Subject, System.Type.Missing)
            Me.olkTextBox3.Text = Me.olkTextBox3.Text & "|" & tempTaskItem.Subject
        End If
    End Sub
    
        void AddDependentTask_Click()
        {
            Outlook.TaskItem tempTaskItem = FindTaskBySubjectName(comboBox1.Text);
            if (tempTaskItem != null)
            {
                this.listBox1.AddItem(tempTaskItem.PercentComplete.ToString()
    + "% Complete -- " + tempTaskItem.Subject, System.Type.Missing);
                this.olkTextBox3.Text = this.olkTextBox3.Text + "|" + 
                    tempTaskItem.Subject;
            }
        }
    
  4. Aggiungere il codice seguente alla classe TaskFormRegion.Questo codice fornisce il metodo di supporto FindTaskBySubjectName descritto nel passaggio precedente.

    Private Function FindTaskBySubjectName(ByVal subjectName As String) _
        As Outlook.TaskItem
        Dim Application As New Outlook.Application()
        Dim outlookNameSpace As Outlook.NameSpace = _
            Application.GetNamespace("MAPI")
        Dim tasksFolder As Outlook.MAPIFolder = _
            outlookNameSpace.GetDefaultFolder _
                (Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderTasks)
        Dim taskItems As Outlook.Items = tasksFolder.Items
        Dim taskItem As Outlook.TaskItem
        For Each taskItem In taskItems
            If taskItem.Subject = subjectName Then
                Return taskItem
            End If
        Next taskItem
        Return Nothing
    End Function
    
    private Outlook.TaskItem FindTaskBySubjectName(string subjectName)
    {
        Outlook.Application Application = new Outlook.Application();
        Outlook.NameSpace outlookNameSpace = Application.GetNamespace("MAPI");
        Outlook.MAPIFolder tasksFolder =
            outlookNameSpace.GetDefaultFolder(
        Microsoft.Office.Interop.Outlook.
            OlDefaultFolders.olFolderTasks);
        Outlook.Items taskItems = tasksFolder.Items;
        foreach (Outlook.TaskItem taskItem in taskItems)
        {
            if (taskItem.Subject == subjectName)
            {
                return taskItem;
            }
        }
        return null;
    }
    
  5. Aggiungere il codice seguente alla classe TaskFormRegion.Mediante il codice vengono effettuate le seguenti attività:

    • Aggiornamento della casella di riepilogo sull'area del modulo con lo stato di completamento corrente di ogni attività dipendente.

    • Analisi del campo di testo nascosto per ottenere l'oggetto di ogni attività dipendente.Ricerca di Microsoft.Office.Interop.Outlook.TaskItem nella cartella delle attività chiamando il metodo di supporto FindTaskBySubjectName e passando l'oggetto di ogni attività.

    • Aggiunta dei valori Microsoft.Office.Interop.Outlook.TaskItem.Subject e Microsoft.Office.Interop.Outlook.TaskItem.PercentComplete alla casella di riepilogo dell'attività dipendente.

    Private Sub RefreshTaskListBox()
        listBox1.Clear()
        Dim tempTaskItem As Outlook.TaskItem
        Dim tempArray As [String]() = olkTextBox3.Text.Split(New [Char]() {"|"c})
    
        Dim tempString As String
        For Each tempString In tempArray
            tempTaskItem = FindTaskBySubjectName(tempString)
            If Not (tempTaskItem Is Nothing) Then
                Me.listBox1.AddItem(tempTaskItem.PercentComplete.ToString() & _
                    "% Complete -- " & tempTaskItem.Subject, System.Type.Missing)
            End If
        Next tempString
    End Sub
    
    void RefreshTaskListBox()
    {
        listBox1.Clear();
        Outlook.TaskItem tempTaskItem;
        String[] tempArray = olkTextBox3.Text.Split(new Char[] { '|' });
    
        foreach (string tempString in tempArray)
        {
            tempTaskItem = FindTaskBySubjectName(tempString);
            if (tempTaskItem != null)
            {
                this.listBox1.AddItem(tempTaskItem.PercentComplete.ToString()
                    + "% Complete -- " + tempTaskItem.Subject, 
                        System.Type.Missing);
            }
        }
    }
    
  6. Sostituire il gestore eventi TaskFormRegion_FormRegionShowing con il codice riportato di seguito.Mediante il codice vengono effettuate le seguenti attività:

    • Inserimento degli oggetti delle attività nella casella combinata sull'area del modulo quando l'area di modulo viene visualizzata.

    • Chiamata del metodo di supporto RefreshTaskListBox quando l'area di modulo viene visualizzata.Viene visualizzata qualsiasi attività dipendente che era stata aggiunta alla casella di riepilogo quando l'elemento è stato precedentemente aperto.

    Private Sub TaskFormRegion_FormRegionShowing(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles MyBase.FormRegionShowing
        populateComboBox()
        RefreshTaskListBox()
    End Sub
    
    private void TaskFormRegion_FormRegionShowing
        (object sender, EventArgs e)
    {
        populateComboBox();
        RefreshTaskListBox();
        this.addDependentTask.Click += new
        Microsoft.Office.Interop.Outlook.
            OlkCommandButtonEvents_ClickEventHandler(AddDependentTask_Click);
    
    }
    

Test dell'area di modulo di Outlook

Per verificare l'area di modulo, aggiungere le attività all'elenco di attività essenziali sull'area di modulo.Aggiornare lo stato di completamento di un'attività essenziale e quindi visualizzare lo stato di completamento aggiornato dell'attività nell'elenco delle attività essenziali.

Per verificare l'area di modulo

  1. Premere F5 per eseguire il progetto.

    Viene avviato Outlook.

  2. In Outlook, nella scheda Pagina iniziale, scegliere Nuovi elementiquindi fare clic Attività.

  3. Nel modulo dell'attività digitare Attività dipendente nel campo Oggetto.

  4. Nella scheda Attività della barra multifunzione, fare clic su Salva e chiudi nel gruppo Azioni.

  5. In Outlook, nella scheda Pagina iniziale, scegliere Nuovi elementi, fare clic Più elementiquindi fare clic Scegli modulo.

  6. Nella finestra di dialogo Scegli modulo, fare clic su TaskFormRegion e quindi su Apri.

    Viene visualizzata l'area del form TaskFormRegion.Questo form sostituisce l'intero form dell'attività.La casella combinata Selezionare un'attività da aggiungere all'elenco di attività dipendenti viene popolata con le altre attività nella cartella delle attività.

  7. Nel form dell'attività, digitare Attività principale nel campo Oggetto.

  8. Nella casella combinata Selezionare un'attività da aggiungere all'elenco di attività dipendenti, selezionare Attività dipendente, quindi fare clic su Aggiungi attività dipendente.

    0% completato -- Attività dipendente viene visualizzato nella casella di riepilogo L'attività dipende dalle seguenti attività.L'evento Microsoft.Office.Interop.Outlook.OlkCommandButton.Click del pulsante è stato quindi correttamente gestito.

  9. Salvare e chiudere l'elemento Attività principale.

  10. Riaprire l'elemento Attività dipendente in Outlook.

  11. Nel modulo Attività dipendente, impostare il campo % completato su 50%.

  12. Nella scheda Attività della barra multifunzione di Attività dipendente, fare clic su Salva e chiudi nel gruppo Azioni.

  13. Riaprire l'elemento Attività principale in Outlook.

    50% completato -- Attività dipendente viene visualizzato nella casella di riepilogo L'attività dipende dalle seguenti attività.

Passaggi successivi

È possibile trovare ulteriori informazioni sulla personalizzazione dell'interfaccia utente di un'applicazione di Outlook nei seguenti argomenti:

Vedere anche

Attività

Procedura dettagliata: progettazione di un'area del modulo di Outlook

Procedura: aggiungere un'area del modulo a un progetto di componente aggiuntivo per Outlook

Procedura: impedire la visualizzazione di un'area del modulo in Outlook

Concetti

Accesso a un'area del modulo in fase di esecuzione

Linee guida per la creazione delle aree di modulo di Outlook

Associazione di un'area del modulo a una classe messaggio di Outlook

Azioni personalizzate nelle aree di modulo di Outlook

Altre risorse

Creazione di aree di modulo di Outlook