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


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

Если проект содержит настройку ленты, созданную с помощью элемента проекта ленты (visual Designer), необходимо внести следующие изменения в код проекта, если целевая платформа изменена на платформа .NET Framework 4 или более поздней версии.

  • Измените созданный код ленты.

  • Измените любой код, который создает экземпляры элементов управления ленты во время выполнения, обрабатывает события ленты или задает положение компонента ленты программным способом.

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

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

  • В проектах Visual Basic или в проектах Visual C#, созданных в Visual Studio 2012 или Visual Studio 2010, выполните все действия в файле кода ленты (YourRibbonItem). Designer.cs или YourRibbonItem. Designer.vb). Чтобы просмотреть файл кода в проектах Visual Basic, нажмите кнопку "Показать все файлы" в Обозреватель решений.

  • В проектах Visual C#, созданных в Visual Studio 2008 и обновленных до Visual Studio 2013, выполните первые два шага в файле кода ленты (YourRibbonItem.cs или YourRibbonItem.vb) и выполните остальные действия в файле кода ленты.

Изменение созданного кода ленты

  1. Измените объявление класса ленты так, чтобы он был производным от RibbonBase, а не от Microsoft.Office.Tools.Ribbon.OfficeRibbon.

  2. Измените конструктор класса ленты, как показано ниже. Если в конструктор был добавлен собственный код, не изменяйте его. В проектах Visual Basic измените только конструктор без параметров. Игнорируйте другой конструктор.

    В следующем примере кода показан конструктор по умолчанию для класса ленты в проекте, ориентированном на .NET Framework 3.5.

    public Ribbon1()
    {
        InitializeComponent();
    }
    

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

    public Ribbon1()
        : base(Globals.Factory.GetRibbonFactory())
    {
        InitializeComponent();
    }
    
  3. В методе InitializeComponent измените код, который создает элемент управления ленты, чтобы код использовал один из вспомогательных методов объекта RibbonFactory.

    Примечание.

    В проектах Visual C# необходимо расширить область Component Designer generated code так, чтобы она включала метод InitializeComponent.

    Например, предположим, что файл содержит следующую строку кода, которая создает экземпляр RibbonButton с именем button1 в проекте, ориентированном на .NET Framework 3.5.

    this.button1 = new Microsoft.Office.Tools.Ribbon.RibbonButton();
    

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

    this.button1 = this.Factory.CreateRibbonButton();
    

    Полный список вспомогательных методов для элементов управления лентой см. в разделе "Создание экземпляров элементов управления лентой".

  4. В проектах Visual C# измените любую строку кода в методе InitializeComponent, использующем делегат EventHandler<TEventArgs>, так, чтобы применялся определенный делегат ленты.

    Например, предположим, что файл содержит следующую строку кода, которая обрабатывает событие Click в проекте, ориентированном на .NET Framework 3.5.

    <CodeContentPlaceHolder>8 В проекте, который предназначен для платформа .NET Framework 4 или более поздней версии, необходимо использовать следующий код.

    <CodeContentPlaceHolder>9 Полный список делегатов ленты см. в разделе "Обработка событий ленты".

  5. В проектах Visual Basic найдите класс ThisRibbonCollection в конце файла. Измените объявление этого класса так, чтобы он больше не наследовал от Microsoft.Office.Tools.Ribbon.RibbonReadOnlyCollection.

Создание экземпляров элементов управления лентой

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

Существует два способа доступа к объекту RibbonFactory:

  • Используя свойство Factory класса ленты. Используйте этот подход в коде в классе ленты.

  • С помощью метода Globals.Factory.GetRibbonFactory. Используйте этот подход в коде вне класса ленты. Дополнительные сведения о классе Globals см. в статье "Глобальный доступ к объектам в проектах Office".

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

<КодContentPlaceHolder>10<CodeContentPlaceHolder>11 В следующей таблице перечислены элементы управления, которые можно создавать программным способом, и метод, используемый для создания элементов управления в проектах, предназначенных для платформа .NET Framework 4 или более поздней версии.

Элемент управления Метод RibbonFactory для использования в платформа .NET Framework 4 и более поздних проектах
RibbonButton CreateRibbonButton
RibbonButtonGroup CreateRibbonButtonGroup
RibbonCheckBox CreateRibbonCheckBox
RibbonComboBox CreateRibbonComboBox
RibbonDialogLauncher CreateRibbonDialogLauncher
RibbonDropDown: CreateRibbonDropDown
RibbonDropDownItem CreateRibbonDropDownItem
RibbonEditBox CreateRibbonEditBox
RibbonGallery CreateRibbonGallery
RibbonGroup CreateRibbonGroup
RibbonLabel CreateRibbonLabel
RibbonManager CreateRibbonManager
RibbonMenu CreateRibbonMenu
RibbonSeparator CreateRibbonSeparator
RibbonSplitButton CreateRibbonSplitButton
RibbonTab CreateRibbonTab
RibbonToggleButton CreateRibbonToggleButton

Обработка событий ленты

Необходимо изменить любой код, который обрабатывает события элементов управления ленты. В проектах, ориентированных на .NET Framework 3.5, эти события обрабатываются универсальным делегатом EventHandler<TEventArgs>. В проектах, предназначенных для платформа .NET Framework 4 или более поздней версии, эти события теперь обрабатываются другими делегатами.

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

Мероприятие Делегирование использования в проектах платформа .NET Framework 4 и более поздних версий
Событие LoadImage в созданном классе ленты RibbonLoadImageEventHandler
Load RibbonUIEventHandler
Click

Click

ItemsLoading

TextChanged

ButtonClick

ItemsLoading

SelectionChanged

TextChanged

ButtonClick

Click

ItemsLoading

DialogLauncherClick

ItemsLoading

Click

Click
RibbonControlEventHandler

Установка положения компонента ленты программным способом

Необходимо изменить любой код, который задает положение групп, вкладок и элементов управления ленты. В проектах, ориентированных на .NET Framework 3.5, можно использовать статические методы AfterOfficeId и BeforeOfficeId класса Microsoft.Office.Tools.Ribbon.RibbonPosition для установки свойства Position группы, вкладки или элемента управления. В проектах, предназначенных для платформа .NET Framework 4 или более поздней версии, необходимо получить доступ к этим методам с помощью RibbonPosition свойства, предоставленного RibbonFactory объектом.

Существует два способа доступа к объекту RibbonFactory:

  • С помощью свойства Factory класса ленты. Используйте этот подход в коде в классе ленты.

  • С помощью метода Globals.Factory.GetRibbonFactory. Используйте этот подход в коде вне класса ленты. Дополнительные сведения о классе Globals см. в статье "Глобальный доступ к объектам в проектах Office".

    В следующем примере кода показано, как установить свойство Position вкладки в классе ленты в проекте, ориентированном на .NET Framework 3.5.

this.tab1.Position = RibbonPosition.AfterOfficeId("TabHome");

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

this.tab1.Position = this.Factory.RibbonPosition.AfterOfficeId("TabHome");