Condividi tramite


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

Aggiornamento: novembre 2007

Si applica a

Le informazioni contenute in questo argomento riguardano solo i progetti Visual Studio Tools per Office e le versioni di Microsoft Office specificati.

Tipo di progetto

  • Progetti a livello di applicazione

Versione Microsoft Office

  • Outlook 2007

Per ulteriori informazioni, vedere Funzionalità disponibili in base ai tipi di progetto e applicazione.

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 di componente aggiuntivo per Outlook di Visual Studio Tools per Office tramite la procedura guidata Nuova area del modulo di Outlook. 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.

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 questa procedura dettagliata, è necessario disporre dei seguenti componenti:

  • Visual Studio Tools per Office (componente facoltativo di Visual Studio 2008 Professional e Visual Studio Team System).

  • Microsoft Office Outlook 2007.

Nota:

Il computer potrebbe mostrare nomi o percorsi diversi per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti. L'edizione di Visual Studio in uso e le impostazioni utilizzate determinano questi elementi. Per ulteriori informazioni, vedere Impostazioni di Visual Studio.

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 2007.

  2. Scegliere Moduli dal menu Strumenti, quindi fare clic su Progetta modulo.

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

  4. Nella scheda Developer, fare clic su Area modulo nel gruppo Struttura, quindi su 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à Titolo su L'attività dipende dalle seguenti attività, impostare la proprietà Larghezza 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 Larghezza 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à Titolo su Selezionare un'attività da aggiungere all'elenco delle attività dipendenti, impostare la proprietà Larghezza 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à Larghezza 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 aggiunta.

  21. Nella finestra Proprietà, impostare la proprietà Nome su AddDependentTask, impostare la proprietà Titolo su Aggiungere attività dipendente, impostare Larghezza 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 fare clic su OK.

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

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

  26. Nella scheda Developer, fare clic su Area modulo nel gruppo Struttura, quindi su Salva area modulo come. Denominare l'area di modulo TaskFormRegion e salvarla in una directory locale del computer.

    L'area di modulo viene salvata come un file osf (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 di componente aggiuntivo per Outlook 2007 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 Visual Studio Tools per Office.

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 scegliere Aggiungi.

    Viene avviata la procedura guidataNuova 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, passare al percorso di TaskFormRegion.ofs, selezionare TaskFormRegion.ofs, fare clic su Aprie 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 operazioni:

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

    • Aggiunge i 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 operazioni:

    • 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 operazioni:

    • 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 testare 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 eseguire il test dell'area di modulo

  1. Premere F5 per eseguire il progetto.

    Viene avviato Outlook.

  2. In Outlook scegliere Nuovo dal menu File, quindi scegliere 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 scegliere Nuovo dal menu File, quindi fare clic su Scegli modulo.

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

    Viene visualizzata l'area del modulo TaskFormRegion. Questo modulo sostituisce l'intero modulo 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 modulo 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 di modulo di Outlook

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

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

Procedura: accedere all'elemento di Outlook in cui viene visualizzata l'area del modulo

Concetti

Accesso a un'area di modulo in fase di esecuzione

Creazione di aree di modulo di Outlook

Linee guida per la creazione delle aree di modulo di Outlook

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

Azioni personalizzate nelle aree di modulo di Outlook