Compartir a través de


Actualizar las áreas del formulario en los proyectos de Outlook migrados a .NET Framework 4 o .NET Framework 4.5

Si el marco de destino de un proyecto de complemento de Outlook con un área de formulario cambia a .NET Framework 4 o a .NET Framework 4.5, debe realizar algunos cambios en el código de área de formulario generado y a cualquier código que cree instancias de determinadas clases de área de formulario en tiempo de ejecución.

Actualizar el código de área de formulario generado

Si el marco de destino del proyecto cambia a .NET Framework 4 o a .NET Framework 4.5, deberá cambiar el código de área de formulario generado.Los cambios que se deben realizar son distintos para las áreas de formulario diseñadas en Visual Studio que para las áreas de formulario importadas desde Outlook.Para obtener más información sobre las diferencias entre estos dos tipos de áreas de formulario, vea Crear áreas de formulario de Outlook.

Para actualizar el código generado de un área de formulario diseñada en Visual Studio

  1. Abra el archivo de código subyacente del área de formulario en el editor de código.Este archivo se denomina suÁreaDeFormulario.Designer.cs o suÁreaDeFormulario.Designer.vb.Para ver este archivo en los proyectos de Visual Basic, haga clic en el botón Mostrar todos los archivos en el Explorador de soluciones.

  2. Modifique la declaración de la clase de área de formulario de modo que se derive de FormRegionBase en lugar de derivarse de Microsoft.Office.Tools.Outlook.FormRegionControl.

  3. Modifique el constructor de la clase de área de formulario, tal y como se muestra en los siguientes ejemplos de código.

    En el siguiente ejemplo de código, se muestra el constructor de una clase de área de formulario en un proyecto destinado 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();
    }
    

    En el siguiente ejemplo de código, se muestra el constructor de una clase de área de formulario en un proyecto destinado 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. Modifique la firma del método InitializeManifest, tal y como se muestra a continuación.Asegúrese de no modificar el código del método; este código representa los valores de área de formulario que aplicó en el diseñador.En proyectos de Visual C#, debe expandir el área denominada Form Region Designer generated code para ver este método.

    En el siguiente ejemplo de código, se muestra la firma del método InitializeManifest en un proyecto destinado 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.
    }
    

    En el siguiente ejemplo de código, se muestra la firma del método InitializeManifest en un proyecto destinado 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. Agregue al proyecto un nuevo elemento de área de formulario de Outlook.Abra el archivo de código subyacente de la nueva área de formulario, busque las clases suNuevaÁreaDeFormularioFactory y WindowFormRegionCollection en el archivo y cópielas en el Portapapeles.

  6. Elimine la nueva área de formulario que agregó al proyecto.

  7. En el archivo de código subyacente del área de formulario que está actualizando para usarla en el proyecto cuyo destino ha cambiado, busque las clases suÁreaDeFormularioOriginalFactory y WindowFormRegionCollection y, a continuación, reemplácelas con el código que copió desde la nueva área de formulario.

  8. En las clases suNuevaÁreaDeFormularioFactory y WindowFormRegionCollection, busque todas las referencias a la clase suNuevaÁreaDeFormulario y cambie cada una de ellas a la clase suÁreaDeFormularioOriginal.Por ejemplo, si el área de formulario que está actualizando se denomina SalesDataFormRegion y la nueva área de formulario que creó en el paso 5 se denomina FormRegion1, cambie a SalesDataFormRegion todas las referencias a FormRegion1.

Para actualizar el código generado de un área de formulario importada desde Outlook

  1. Abra el archivo de código subyacente del área de formulario en el editor de código.Este archivo se denomina suÁreaDeFormulario.Designer.cs o suÁreaDeFormulario.Designer.vb.Para ver este archivo en los proyectos de Visual Basic, haga clic en el botón Mostrar todos los archivos en el Explorador de soluciones.

  2. Modifique la declaración de la clase de área de formulario de modo que se derive de ImportedFormRegionBase en lugar de derivarse de Microsoft.Office.Tools.Outlook.ImportedFormRegion.

  3. Modifique el constructor de la clase de área de formulario, tal y como se muestra en los siguientes ejemplos de código.

    En el siguiente ejemplo de código, se muestra el constructor de una clase de área de formulario en un proyecto destinado 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);
    }
    

    En el siguiente ejemplo de código, se muestra la firma del constructor de una clase de área de formulario en un proyecto destinado 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. Para cada línea de código en el método InitializeControls que inicialice un control en la clase de área de formulario, modifique el código tal y como se muestra a continuación.

    En el siguiente ejemplo de código, se muestra cómo inicializar un control en un proyecto destinado a .NET Framework 3.5.En este código, el método GetFormRegionControl tiene un parámetro que especifica el tipo del control que se devuelve.

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

    En el siguiente ejemplo de código, se muestra cómo inicializar un control en un proyecto destinado a .NET Framework 4.En este código, el método GetFormRegionControl no tiene un parámetro de tipo.Debe convertir el valor devuelto al tipo del control que está inicializando.

    Me.olkTextBox1 = CType(GetFormRegionControl("OlkTextBox1"), Microsoft.Office.Interop.Outlook.OlkTextBox)
    
    this.olkTextBox1 = (Microsoft.Office.Interop.Outlook.OlkTextBox)GetFormRegionControl("OlkTextBox1");
    
  5. Agregue al proyecto un nuevo elemento de área de formulario de Outlook.Abra el archivo de código subyacente de la nueva área de formulario, busque las clases suNuevaÁreaDeFormularioFactory y WindowFormRegionCollection en el archivo y cópielas en el Portapapeles.

  6. Elimine la nueva área de formulario que agregó al proyecto.

  7. En el archivo de código subyacente del área de formulario que está actualizando para usarla en el proyecto cuyo destino ha cambiado, busque las clases suÁreaDeFormularioOriginalFactory y WindowFormRegionCollection y, a continuación, reemplácelas con el código que copió desde la nueva área de formulario.

  8. En las clases suNuevaÁreaDeFormularioFactory y WindowFormRegionCollection, busque todas las referencias a la clase suNuevaÁreaDeFormulario y cambie cada una de ellas a la clase suÁreaDeFormularioOriginal.Por ejemplo, si el área de formulario que está actualizando se denomina SalesDataFormRegion y la nueva área de formulario que creó en el paso 5 se denomina FormRegion1, cambie a SalesDataFormRegion todas las referencias a FormRegion1.

Crear instancias de clases de área de formulario

Debe modificar cualquier código que cree dinámicamente instancias de determinadas clases de área de formulario.En proyectos destinados a .NET Framework 3.5, se pueden crear directamente instancias de las clases de área de formulario, como Microsoft.Office.Tools.Outlook.FormRegionManifest.En proyectos destinados .NET Framework 4 o .NET Framework 4.5, estas clases son interfaces de las que no se pueden crear instancias directamente.

Si el marco de destino del proyecto cambia a .NET Framework 4 o a .NET Framework 4.5, debe crear instancias de las interfaces mediante los métodos proporcionados por la propiedad de Globals.Factory.Para obtener más información sobre la propiedad Globals.Factory, vea Acceso global a objetos en los proyectos de Office.

La tabla siguiente se enumeran los tipos de área de formulario y el método que se usa para crear instancias de los tipos en proyectos destinados .NET Framework 4 o .NET Framework 4.5.

Tipo

Método de generador que se usa

FormRegionCustomAction

CreateFormRegionCustomAction()

FormRegionInitializingEventArgs

CreateFormRegionInitializingEventArgs

FormRegionManifest

CreateFormRegionManifest

Vea también

Conceptos

Migrar soluciones de Office a .NET Framework 4 o .NET Framework 4.5

Otros recursos

Crear áreas de formulario de Outlook