Freigeben über


Aktualisieren von Formularbereichen in Outlook-Projekten, die zu .NET Framework 4 migriert werden

Wenn das Zielframework eines Outlook-Add-In-Projekts mit einem Formularbereich in .NET Framework 4 geändert wird, müssen Sie Änderungen am generierten Formularbereichcode und am Code vornehmen, in dem bestimmte Formularbereichklassen zur Laufzeit instanziiert werden.

Aktualisieren des generierten Formularbereichcodes

Wenn das Zielframework des Projekts in .NET Framework 4 geändert wird, müssen Sie den generierten Formularbereichcode ändern. Die Änderungen, die Sie vornehmen, sind für in Visual Studio entworfene Formularbereiche und für aus Outlook importierte Formularbereiche verschieden. Weitere Informationen zu den Unterschieden zwischen diesen Typen von Formularbereichen finden Sie unter Erstellen von Outlook-Formularbereichen.

So aktualisieren Sie den generierten Code für einen in Visual Studio entworfenen Formularbereich

  1. Öffnen Sie die CodeBehind-Datei für den Formularbereich im Code-Editor. Der Name dieser Datei lautet Formularbereich.Designer.cs oder Formularbereich.Designer.vb. Klicken Sie im Projektmappen-Explorer auf die Schaltfläche Alle Dateien anzeigen, um diese Datei in Visual Basic-Projekten anzuzeigen.

  2. Ändern Sie die Deklaration der Formularbereichklasse so, dass sie von FormRegionBase statt von Microsoft.Office.Tools.Outlook.FormRegionControl abgeleitet wird.

  3. Ändern Sie den Konstruktor der Formularbereichklasse, wie in den folgenden Codebeispielen dargestellt.

    Im folgenden Codebeispiel wird der Konstruktor einer Formularbereichklasse in einem Projekt dargestellt, das auf .NET Framework 3.5 abzielt.

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

    Im folgenden Codebeispiel wird der Konstruktor einer Formularbereichklasse in einem Projekt dargestellt, das auf .NET Framework 4 abzielt.

    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. Ändern Sie die Signatur der InitializeManifest-Methode, wie unten dargestellt. Stellen Sie sicher, dass Sie den Code in der Methode nicht ändern. In diesem Code werden Formularbereicheinstellungen dargestellt, die im Designer angewendet wurden. In Visual C#-Projekten müssen Sie den Bereich mit der Bezeichnung Form Region Designer generated code erweitern, um diese Methode anzuzeigen.

    Im folgenden Codebeispiel wird die Signatur der InitializeManifest-Methode in einem Projekt dargestellt, das auf .NET Framework 3.5 abzielt.

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

    Im folgenden Codebeispiel wird die Signatur der InitializeManifest-Methode in einem Projekt dargestellt, das auf .NET Framework 4 abzielt.

    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. Fügen Sie dem Projekt ein neues Element für den Outlook-Formularbereich hinzu. Öffnen Sie die CodeBehind-Datei für den neuen Formularbereich, suchen Sie die NeuerFormularbereichFactory-Klasse und WindowFormRegionCollection-Klasse in der Datei, und kopieren Sie diese Klassen in die Zwischenablage.

  6. Löschen Sie den neuen Formularbereich, den Sie dem Projekt hinzugefügt haben.

  7. Suchen Sie in der CodeBehind-Datei des Formularbereichs, den Sie für das neu zugewiesene Projekt aktualisieren, die UrsprünglicherFormularbereichFactory-Klasse und WindowFormRegionCollection-Klasse, und ersetzen Sie sie durch den Code, den Sie aus dem neuen Formularbereich kopiert haben.

  8. Suchen Sie in der NeuerFormularbereichFactory-Klasse und WindowFormRegionCollection-Klasse alle Verweise auf die NeuerFormularbereich-Klasse, und ändern Sie jeden Verweis auf die UrsprünglicherFormularbereich-Klasse. Wenn z. B. der Name des Formularbereichs, den Sie aktualisieren, SalesDataFormRegion lautet, und der Name des neuen, in Schritt 5 erstellten Formularbereichs FormRegion1 lautet, ändern Sie alle Verweise von FormRegion1 in SalesDataFormRegion.

So aktualisieren Sie den generierten Code für einen aus Outlook importierten Formularbereich

  1. Öffnen Sie die CodeBehind-Datei für den Formularbereich im Code-Editor. Der Name dieser Datei lautet Formularbereich.Designer.cs oder Formularbereich.Designer.vb. Klicken Sie im Projektmappen-Explorer auf die Schaltfläche Alle Dateien anzeigen, um diese Datei in Visual Basic-Projekten anzuzeigen.

  2. Ändern Sie die Deklaration der Formularbereichklasse so, dass sie von ImportedFormRegionBase statt von Microsoft.Office.Tools.Outlook.ImportedFormRegion abgeleitet wird.

  3. Ändern Sie den Konstruktor der Formularbereichklasse, wie in den folgenden Codebeispielen dargestellt.

    Im folgenden Codebeispiel wird der Konstruktor einer Formularbereichklasse in einem Projekt dargestellt, das auf .NET Framework 3.5 abzielt.

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

    Im folgenden Codebeispiel wird die Signatur des Konstruktors einer Formularbereichklasse in einem Projekt dargestellt, das auf .NET Framework 4 abzielt.

    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. Ändern Sie den Code für jede Codezeile in der InitializeControls-Methode, die ein Steuerelement in der Formularbereichklasse initialisiert, wie unten dargestellt.

    Im folgenden Codebeispiel wird gezeigt, wie ein Steuerelement in einem Projekt initialisiert wird, das auf .NET Framework 3.5 abzielt. In diesem Code verfügt die GetFormRegionControl-Methode über einen Typparameter, der den Typ des zurückgegebenen Steuerelements angibt.

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

    Im folgenden Codebeispiel wird gezeigt, wie ein Steuerelement in einem Projekt initialisiert wird, das auf .NET Framework 4 abzielt. In diesem Code verfügt die GetFormRegionControl-Methode nicht über einen Typparameter. Sie müssen den Rückgabewert in den Typ des Steuerelements umwandeln, das Sie initialisieren.

    Me.olkTextBox1 = CType(GetFormRegionControl("OlkTextBox1"), Microsoft.Office.Interop.Outlook.OlkTextBox)
    
    this.olkTextBox1 = (Microsoft.Office.Interop.Outlook.OlkTextBox)GetFormRegionControl("OlkTextBox1");
    
  5. Fügen Sie dem Projekt ein neues Element für den Outlook-Formularbereich hinzu. Öffnen Sie die CodeBehind-Datei für den neuen Formularbereich, suchen Sie die NeuerFormularbereichFactory-Klasse und WindowFormRegionCollection-Klasse in der Datei, und kopieren Sie diese Klassen in die Zwischenablage.

  6. Löschen Sie den neuen Formularbereich, den Sie dem Projekt hinzugefügt haben.

  7. Suchen Sie in der CodeBehind-Datei des Formularbereichs, den Sie für das neu zugewiesene Projekt aktualisieren, die UrsprünglicherFormularbereichFactory-Klasse und WindowFormRegionCollection-Klasse, und ersetzen Sie sie durch den Code, den Sie aus dem neuen Formularbereich kopiert haben.

  8. Suchen Sie in der NeuerFormularbereichFactory-Klasse und WindowFormRegionCollection-Klasse alle Verweise auf die NeuerFormularbereich-Klasse, und ändern Sie jeden Verweis auf die UrsprünglicherFormularbereich-Klasse. Wenn z. B. der Name des Formularbereichs, den Sie aktualisieren, SalesDataFormRegion lautet, und der Name des neuen, in Schritt 5 erstellten Formularbereichs FormRegion1 lautet, ändern Sie alle Verweise von FormRegion1 in SalesDataFormRegion.

Instanziieren von Formularbereichklassen

Sie müssen Code ändern, in dem bestimmte Formularbereichklassen dynamisch instanziiert werden. In Projekten, die auf .NET Framework 3.5 abzielen, können Sie Formularbereichklassen wie Microsoft.Office.Tools.Outlook.FormRegionManifest direkt instanziieren. In Projekten, die auf .NET Framework 4 abzielen, sind diese Klassen Schnittstellen, die Sie nicht direkt instanziieren können.

Wenn das Zielframework des Projekts in .NET Framework 4 geändert wird, müssen Sie die Schnittstellen mit Methoden instanziieren, die von der Globals.Factory-Eigenschaft bereitgestellt werden. Weitere Informationen zur Globals.Factory-Eigenschaft finden Sie unter Globaler Zugriff auf Objekte in Office-Projekten.

In der folgenden Tabelle sind die Formularbereichtypen und die Methode zum Instanziieren der Typen in Projekten aufgeführt, die auf .NET Framework 4 abzielen.

Typ

Zu verwendende Factorymethode

FormRegionCustomAction

CreateFormRegionCustomAction()

FormRegionInitializingEventArgs

CreateFormRegionInitializingEventArgs

FormRegionManifest

CreateFormRegionManifest

Siehe auch

Weitere Ressourcen

Migrieren von Office-Lösungen zu .NET Framework 4

Erstellen von Outlook-Formularbereichen