Поделиться через


Обновление областей формы в проектах Outlook, которые переносятся на платформу .NET Framework 4 или .NET Framework 4.5

Если требуемая версия .NET Framework для проекта надстройки Outlook с областью формы изменяется на .NET Framework 4 или .NET Framework 4.5, необходимо внести некоторые изменения в создаваемый код области формы и в любой код, который создает экземпляры определенных классов области формы во время выполнения.

Обновление созданного кода области формы

Если требуемая версия .NET Framework для проекта изменяется на .NET Framework 4 или .NET Framework 4.5, необходимо изменить созданный код области формы.Вносимые изменения отличаются для областей форм, которые были разработаны в Visual Studio, и для областей форм, импортируемых из Outlook.Дополнительные сведения о различиях между этими типами областей форм см. в разделе Создание областей форм Outlook.

Чтобы обновить созданный код для области формы, разработанной в Visual Studio

  1. Откройте файл кода программной части области формы в редакторе кода.Файл называется область_формы.Designer.cs или область_формы.Designer.vb.Чтобы просмотреть этот файл в проектах Visual Basic, нажмите кнопку Показать все файлы в обозревателе решений.

  2. Измените объявление класса области формы, чтобы он был производным из FormRegionBase, а не из Microsoft.Office.Tools.Outlook.FormRegionControl.

  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, чтобы увидеть сам метод.

    В следующем примере кода показана сигнатура метода InitializeManifest в проекте, ориентированном на .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.
    }
    

    В следующем примере кода показана сигнатура метода InitializeManifest в проекте, ориентированном на .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. Добавьте новый элемент области формы Outlook в проект.Откройте файл кода программной части для новой области формы, найдите в этом файле классы область_формыFactory и WindowFormRegionCollection, затем скопируйте эти классы в буфер обмена.

  6. Удалите новую область формы, которая была добавлена в проект.

  7. В файле кода программной части для области формы, которая обновляется для функционирования в проекте с измененной требуемой платформой, найдите классы исходная_область_формыFactory и WindowFormRegionCollection, затем замените их кодом, который был скопирован из новой области формы.

  8. В классах новая_область_формыFactory и WindowFormRegionCollection найдите все ссылки на класс новая_область_формы и измените каждую ссылку ссылкой на класс исходная_область_формы.Например, если обновляемая область формы называется SalesDataFormRegion, а новая область формы, созданная на шаге 5 называется FormRegion1, измените все ссылки на FormRegion1 ссылками на SalesDataFormRegion.

Чтобы обновить созданный код для области формы, импортированной из Outlook

  1. Откройте файл кода программной части области формы в редакторе кода.Файл называется область_формы.Designer.cs или область_формы.Designer.vb.Чтобы просмотреть этот файл в проектах Visual Basic, нажмите кнопку Показать все файлы в обозревателе решений.

  2. Измените объявление класса области формы, чтобы он был производным из ImportedFormRegionBase, а не из Microsoft.Office.Tools.Outlook.ImportedFormRegion.

  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 в проект.Откройте файл кода программной части для новой области формы, найдите в этом файле классы область_формыFactory и WindowFormRegionCollection, затем скопируйте эти классы в буфер обмена.

  6. Удалите новую область формы, которая была добавлена в проект.

  7. В файле кода программной части для области формы, которая обновляется для функционирования в проекте с измененной требуемой платформой, найдите классы исходная_область_формыFactory и WindowFormRegionCollection, затем замените их кодом, который был скопирован из новой области формы.

  8. В классах новая_область_формыFactory и WindowFormRegionCollection найдите все ссылки на класс новая_область_формы и измените каждую ссылку ссылкой на класс исходная_область_формы.Например, если обновляемая область формы называется SalesDataFormRegion, а новая область формы, созданная на шаге 5 называется FormRegion1, измените все ссылки на FormRegion1 ссылками на SalesDataFormRegion.

Создание экземпляров из области формы

Необходимо изменить любой код, который динамически создает экземпляры определенных классов области формы.В проектах, ориентированных на .NET Framework 3.5, можно напрямую создавать экземпляры классов области формы, такие как Microsoft.Office.Tools.Outlook.FormRegionManifest.В проектах, целевой объект .NET Framework 4 или .NET Framework 4.5, эти классы интерфейсы, которые нельзя создать напрямую.

Если требуемая версия .NET Framework для проекта изменяется на .NET Framework 4 или .NET Framework 4.5, необходимо создать интерфейсов с помощью методов, предоставляемых свойством Globals.Factory.Дополнительные сведения о свойстве Globals.Factory см. в разделе Глобальный доступ к объектам в проектах Office.

В следующей таблице перечислены области формы и метод, используемый для создания типов проектов, целевой объект .NET Framework 4 или .NET Framework 4.5.

Тип

Используемый фабричный метод

FormRegionCustomAction

CreateFormRegionCustomAction()

FormRegionInitializingEventArgs

CreateFormRegionInitializingEventArgs

FormRegionManifest

CreateFormRegionManifest

См. также

Основные понятия

Перенос решений Office на платформу .NET Framework 4 или .NET Framework 4.5

Другие ресурсы

Создание областей форм Outlook