Aggiornamento di aree del modulo in progetti Outlook di cui si esegue la migrazione a .NET Framework 4

Se il framework di destinazione di un progetto componente aggiuntivo di Outlook con un'area del modulo viene aggiornato a .NET Framework 4, è necessario apportare alcune modifiche al codice dell'area del modulo generato e a qualsiasi codice che crea istanze di alcune classi di aree del modulo durante la fase di esecuzione.

Aggiornamento del codice dell'area del modulo generato

Se il framework di destinazione del progetto viene aggiornato a .NET Framework 4, è necessario modificare il codice dell'area del modulo generato. Le modifiche da apportare cambiano a seconda che le aree del modulo siano progettate in Visual Studio o importate da Outlook. Per ulteriori informazioni sulle differenze tra questi tipi di aree del modulo, vedere Creazione di aree di modulo di Outlook.

Per aggiornare il codice generato per un'area del modulo progettata in Visual Studio

  1. Aprire il file code-behind dell'area del modulo nell'editor del codice. Il nome del file è YourFormRegion.Designer.cs o YourFormRegion.Designer.vb. Per visualizzare il file nei progetti Visual Basic, fare clic sul pulsante Mostra tutti i file in Esplora soluzioni.

  2. Modificare la dichiarazione della classe di aree del modulo in modo che derivi da FormRegionBase anziché da Microsoft.Office.Tools.Outlook.FormRegionControl.

  3. Modificare il costruttore della classe di aree del modulo come illustrato negli esempi di codice seguenti.

    Nell'esempio di codice seguente viene illustrato il costruttore di una classe di aree del modulo in un progetto destinato a .NET Framework 3.5.

    Public Sub New(ByVal formRegion As Microsoft.Office.Interop.Outlook.FormRegion)
        MyBase.New(formRegion)
        Me.InitializeComponent()
    End Sub
    
    public FormRegion1(Microsoft.Office.Interop.Outlook.FormRegion formRegion)
        : base(formRegion)
    {
        this.InitializeComponent();
    }
    

    Nell'esempio di codice seguente viene illustrato il costruttore di una classe di aree del modulo in un progetto destinato a .NET Framework 4.

    Public Sub New(ByVal formRegion As Microsoft.Office.Interop.Outlook.FormRegion)
        MyBase.New(Globals.Factory, formRegion)
        Me.InitializeComponent()
    End Sub
    
    public FormRegion1(Microsoft.Office.Interop.Outlook.FormRegion formRegion)
        : base(Globals.Factory, formRegion)
    {
        this.InitializeComponent();
    }
    
  4. Modificare la firma del metodo InitializeManifest come illustrato di seguito. Assicurarsi di non modificare il codice nel metodo in quanto rappresenta le impostazioni dell'area del modulo applicate nella finestra di progettazione. Nei progetti Visual C#, è necessario espandere l'area denominata Form Region Designer generated code per visualizzare questo metodo.

    Nell'esempio di codice seguente viene illustrata la firma del metodo InitializeManifest in un progetto destinato a .NET Framework 3.5.

    Private Shared Sub InitializeManifest(ByVal manifest As Microsoft.Office.Tools.Outlook.FormRegionManifest)
    
        ' Do not change code in this method.
    End Sub
    
    private static void InitializeManifest(Microsoft.Office.Tools.Outlook.FormRegionManifest manifest)
    {
        // Do not change code in this method.
    }
    

    Nell'esempio di codice seguente viene illustrata la firma del metodo InitializeManifest in un progetto destinato a .NET Framework 4.

    Private Shared Sub InitializeManifest(ByVal manifest As Microsoft.Office.Tools.Outlook.FormRegionManifest, 
        ByVal factory As Microsoft.Office.Tools.Outlook.Factory)
    
        ' Do not change code in this method.
    End Sub
    
    private static void InitializeManifest(Microsoft.Office.Tools.Outlook.FormRegionManifest manifest, 
        Microsoft.Office.Tools.Outlook.Factory factory)
    {
        // Do not change code in this method.
    }
    
  5. Aggiungere un nuovo elemento Area del modulo di Outlook al progetto. Aprire il file code-behind per la nuova area del modulo, individuare le classi YourNewFormRegionFactory e WindowFormRegionCollection nel file, quindi copiare queste classi negli Appunti.

  6. Eliminare la nuova area del modulo aggiunta al progetto.

  7. Nel file code-behind dell'area del modulo che si desidera aggiornare per lavorare nel progetto con la nuova destinazione, individuare le classi YourOriginalFormRegionFactory e WindowFormRegionCollection e sostituirle con il codice copiato dalla nuova area del modulo.

  8. Nelle classi YourNewFormRegionFactory e WindowFormRegionCollection cercare tutti i riferimenti alla classe YourNewFormRegion e modificarli in modo che facciano riferimento alla classe YourOriginalFormRegion. Ad esempio, se l'area del modulo che si desidera aggiornare è denominata SalesDataFormRegion e la nuova area del modulo creata nel passaggio 5 è denominata FormRegion1, impostare tutti i riferimenti di FormRegion1 a SalesDataFormRegion.

Per aggiornare il codice generato per un'area del modulo importata da Outlook

  1. Aprire il file code-behind dell'area del modulo nell'editor del codice. Il nome del file è YourFormRegion.Designer.cs o YourFormRegion.Designer.vb. Per visualizzare il file nei progetti Visual Basic, fare clic sul pulsante Mostra tutti i file in Esplora soluzioni.

  2. Modificare la dichiarazione della classe di aree del modulo in modo che derivi da ImportedFormRegionBase anziché da Microsoft.Office.Tools.Outlook.ImportedFormRegion.

  3. Modificare il costruttore della classe di aree del modulo come illustrato negli esempi di codice seguenti.

    Nell'esempio di codice seguente viene illustrato il costruttore di una classe di aree del modulo in un progetto destinato a .NET Framework 3.5.

    Public Sub New(ByVal formRegion As Microsoft.Office.Interop.Outlook.FormRegion)
        MyBase.New(formRegion)
    End Sub
    
    public ImportedFormRegion1(Microsoft.Office.Interop.Outlook.FormRegion formRegion)
        : base(formRegion)
    {
        this.FormRegionShowing += new System.EventHandler(this.TaskFormRegion_FormRegionShowing);
        this.FormRegionClosed += new System.EventHandler(this.TaskFormRegion_FormRegionClosed);
    }
    

    Nell'esempio di codice seguente viene illustrata la firma del costruttore di una classe di aree del modulo in un progetto destinato a .NET Framework 4.

    Public Sub New(ByVal formRegion As Microsoft.Office.Interop.Outlook.FormRegion)
        MyBase.New(Globals.Factory, formRegion)
    End Sub
    
    public ImportedFormRegion1(Microsoft.Office.Interop.Outlook.FormRegion formRegion)
        : base(Globals.Factory, formRegion)
    {
        this.FormRegionShowing += new System.EventHandler(this.TaskFormRegion_FormRegionShowing);
        this.FormRegionClosed += new System.EventHandler(this.TaskFormRegion_FormRegionClosed);
    }
    
  4. Per ogni riga di codice nel metodo InitializeControls che inizializza un controllo nella classe di aree del modulo, modificare il codice come illustrato di seguito.

    Nell'esempio di codice seguente viene illustrato come inizializzare un controllo in un progetto destinato a .NET Framework 3.5. In questo codice, il metodo GetFormRegionControl dispone di un parametro di tipo che specifica il tipo del controllo restituito.

    Me.olkTextBox1 = Me.GetFormRegionControl(Of Microsoft.Office.Interop.Outlook.OlkTextBox)("OlkTextBox1")
    
    this.olkTextBox1 = this.GetFormRegionControl<Microsoft.Office.Interop.Outlook.OlkTextBox>("OlkTextBox1");
    

    Nell'esempio di codice seguente viene illustrato come inizializzare un controllo in un progetto destinato a .NET Framework 4. In questo codice, il metodo GetFormRegionControl non dispone di un parametro di tipo. È necessario sottoporre a cast il valore restituito nel tipo del controllo che si desidera inizializzare.

    Me.olkTextBox1 = CType(GetFormRegionControl("OlkTextBox1"), Microsoft.Office.Interop.Outlook.OlkTextBox)
    
    this.olkTextBox1 = (Microsoft.Office.Interop.Outlook.OlkTextBox)GetFormRegionControl("OlkTextBox1");
    
  5. Aggiungere un nuovo elemento Area del modulo di Outlook al progetto. Aprire il file code-behind per la nuova area del modulo, individuare le classi YourNewFormRegionFactory e WindowFormRegionCollection nel file, quindi copiare queste classi negli Appunti.

  6. Eliminare la nuova area del modulo aggiunta al progetto.

  7. Nel file code-behind dell'area del modulo che si desidera aggiornare per lavorare nel progetto con la nuova destinazione, individuare le classi YourOriginalFormRegionFactory e WindowFormRegionCollection e sostituirle con il codice copiato dalla nuova area del modulo.

  8. Nelle classi YourNewFormRegionFactory e WindowFormRegionCollection cercare tutti i riferimenti alla classe YourNewFormRegion e modificarli in modo che facciano riferimento alla classe YourOriginalFormRegion. Ad esempio, se l'area del modulo che si desidera aggiornare è denominata SalesDataFormRegion e la nuova area del modulo creata nel passaggio 5 è denominata FormRegion1, impostare tutti i riferimenti di FormRegion1 a SalesDataFormRegion.

Creazione di istanze delle classi di aree del modulo

È necessario modificare il codice che crea dinamicamente istanze di alcune classi di aree del modulo. Nei progetti destinati a .NET Framework 3.5, è possibile creare direttamente istanze di classi di aree del modulo come Microsoft.Office.Tools.Outlook.FormRegionManifest. Nei progetti destinati a .NET Framework 4, queste classi sono interfacce di cui non è possibile creare istanze direttamente.

Se il framework di destinazione del progetto viene aggiornato a .NET Framework 4, è necessario creare istanze delle interfacce tramite metodi forniti dalla proprietà Globals.Factory. Per ulteriori informazioni sulla proprietà Globals.Factory, vedere Accesso globale a oggetti nei progetti di Office.

Nella tabella seguente sono elencati i tipi di area del modulo e il metodo da utilizzare per creare istanze dei tipi nei progetti destinati a .NET Framework 4.

Tipo

Metodo factory da utilizzare

FormRegionCustomAction

CreateFormRegionCustomAction()

FormRegionInitializingEventArgs

CreateFormRegionInitializingEventArgs

FormRegionManifest

CreateFormRegionManifest

Vedere anche

Concetti

Migrazione di soluzioni Office a .NET Framework 4

Altre risorse

Creazione di aree di modulo di Outlook