次の方法で共有


.NET Framework 4 に移行する Outlook プロジェクトのフォーム領域の更新

フォーム領域を含む Outlook アドイン プロジェクトのターゲット フレームワークが .NET Framework 4 に変更された場合は、生成されたフォーム領域コードと、実行時に特定のフォーム領域クラスをインスタンス化するコードを変更する必要があります。

生成されたフォーム領域コードの更新

プロジェクトのターゲット フレームワークが .NET Framework 4 に変更された場合は、生成されたフォーム領域コードを変更する必要があります。 Visual Studio でデザインしたフォーム領域と Outlook からインポートしたフォーム領域では、変更内容が異なります。 これらの種類のフォーム領域の相違点の詳細については、「Outlook フォーム領域の作成」を参照してください。

Visual Studio でデザインしたフォーム領域の生成されたコードを更新するには

  1. コード エディターでフォーム領域の分離コード ファイルを開きます。 ファイル名は YourFormRegion.Designer.cs または YourFormRegion.Designer.vb です。 Visual Basic プロジェクトでこのファイルを確認するには、ソリューション エクスプローラー[すべてのファイルの表示] をクリックします。

  2. フォーム領域クラスの宣言を変更して、Microsoft.Office.Tools.Outlook.FormRegionControl の代わりに FormRegionBase から派生するようにします。

  3. 次のコード例に示すように、フォーム領域クラスのコンストラクターを変更します。

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

    .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. InitializeManifest メソッドのシグネチャを次のように変更します。 メソッドのコードは変更しないようにします。このコードは、デザイナーで適用されたフォーム領域の設定を表しています。 Visual C# プロジェクトでは、このメソッドを表示するために Form Region Designer generated code という名前の領域を展開する必要があります。

    .NET Framework 3.5 を対象とするプロジェクトの InitializeManifest メソッドのシグネチャを次のコード例に示します。

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

    .NET Framework 4 を対象とするプロジェクトの InitializeManifest メソッドのシグネチャを次のコード例に示します。

    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. 新しい Outlook フォーム領域項目をプロジェクトに追加します。 新しいフォーム領域の分離コード ファイルを開き、ファイル内で YourNewFormRegionFactory クラスおよび WindowFormRegionCollection クラスを特定し、これらのクラスをクリップボードにコピーします。

  6. プロジェクトに追加した新しいフォーム領域を削除します。

  7. 再ターゲットされたプロジェクトで動作するように更新中のフォーム領域の分離コード ファイルで、YourOriginalFormRegionFactory クラスおよび WindowFormRegionCollection クラスを特定し、新しいフォーム領域からコピーしたコードで置換します。

  8. YourNewFormRegionFactory クラスおよび WindowFormRegionCollection クラスで、YourNewFormRegion クラスへのすべての参照を検索し、各参照を YourOriginalFormRegion クラスへの参照に変更します。 たとえば、更新中のフォーム領域が SalesDataFormRegion という名前であり、手順 5. で作成した新しいフォーム領域が FormRegion1 という名前である場合は、FormRegion1 へのすべての参照を SalesDataFormRegion に変更します。

Outlook からインポートしたフォーム領域の生成されたコードを更新するには

  1. コード エディターでフォーム領域の分離コード ファイルを開きます。 ファイル名は YourFormRegion.Designer.cs または YourFormRegion.Designer.vb です。 Visual Basic プロジェクトでこのファイルを確認するには、ソリューション エクスプローラー[すべてのファイルの表示] をクリックします。

  2. フォーム領域クラスの宣言を変更して、Microsoft.Office.Tools.Outlook.ImportedFormRegion の代わりに ImportedFormRegionBase から派生するようにします。

  3. 次のコード例に示すように、フォーム領域クラスのコンストラクターを変更します。

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

    .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. フォーム領域クラスのコントロールを初期化する InitializeControls メソッドの各コード行で、以下のようにコードを変更します。

    .NET Framework 3.5 を対象とするプロジェクトでコントロールを初期化する方法を次のコード例に示します。 このコードでは、GetFormRegionControl メソッドに、返されるコントロールの型を指定する型パラメーターがあります。

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

    .NET Framework 4 を対象とするプロジェクトでコントロールを初期化する方法を次のコード例に示します。 このコードでは、GetFormRegionControl メソッドに型パラメーターはありません。 初期化するコントロールの型に戻り値をキャストする必要があります。

    Me.olkTextBox1 = CType(GetFormRegionControl("OlkTextBox1"), Microsoft.Office.Interop.Outlook.OlkTextBox)
    
    this.olkTextBox1 = (Microsoft.Office.Interop.Outlook.OlkTextBox)GetFormRegionControl("OlkTextBox1");
    
  5. 新しい Outlook フォーム領域項目をプロジェクトに追加します。 新しいフォーム領域の分離コード ファイルを開き、ファイル内で YourNewFormRegionFactory クラスおよび WindowFormRegionCollection クラスを特定し、これらのクラスをクリップボードにコピーします。

  6. プロジェクトに追加した新しいフォーム領域を削除します。

  7. 再ターゲットされたプロジェクトで動作するように更新中のフォーム領域の分離コード ファイルで、YourOriginalFormRegionFactory クラスおよび WindowFormRegionCollection クラスを特定し、新しいフォーム領域からコピーしたコードで置換します。

  8. YourNewFormRegionFactory クラスおよび WindowFormRegionCollection クラスで、YourNewFormRegion クラスへのすべての参照を検索し、各参照を YourOriginalFormRegion クラスへの参照に変更します。 たとえば、更新中のフォーム領域が SalesDataFormRegion という名前であり、手順 5. で作成した新しいフォーム領域が FormRegion1 という名前である場合は、FormRegion1 へのすべての参照を SalesDataFormRegion に変更します。

フォーム領域クラスのインスタンス化

特定のフォーム領域クラスを動的にインスタンス化するすべてのコードを変更する必要があります。 .NET Framework 3.5 を対象とするプロジェクトでは、Microsoft.Office.Tools.Outlook.FormRegionManifest などのフォーム領域クラスを直接インスタンス化できます。 .NET Framework 4 を対象とするプロジェクトでは、これらのクラスはインターフェイスであるため、直接インスタンス化できません。

プロジェクトのターゲット フレームワークが .NET Framework 4 に変更された場合は、Globals.Factory プロパティで提供されているメソッドを使用してインターフェイスをインスタンス化する必要があります。 Globals.Factory プロパティの詳細については、「Office プロジェクト内のオブジェクトへのグローバル アクセス」を参照してください。

次の表に、フォーム領域の型と、.NET Framework 4 を対象とするプロジェクトでの型のインスタンス化に使用するメソッドを示します。

使用するファクトリ メソッド

FormRegionCustomAction

CreateFormRegionCustomAction()

FormRegionInitializingEventArgs

CreateFormRegionInitializingEventArgs

FormRegionManifest

CreateFormRegionManifest

参照

概念

Outlook フォーム領域の作成

その他の技術情報

.NET Framework 4 への Office ソリューションの移行