Обновление настроек ленты в проектах Office, которые переносятся на платформу .NET Framework 4 или .NET Framework 4.5
Если проект содержит настройки ленты, которая была создана с помощью элемента проекта Лента (визуальный конструктор), необходимо внести следующие изменения в коде проекта, если требуемая версия .NET Framework изменяется на .NET Framework 4 или .NET Framework 4.5, выполните следующие действия.
Измените созданный код ленты.
Измените код, который создает экземпляры элементов управления ленты во время управления, обрабатывает события ленты или программно задает положение компонента ленты.
Обновление созданного кода ленты
Если требуемая версия .NET Framework для проекта изменяется на .NET Framework 4 или .NET Framework 4.5, необходимо изменить созданный код элемента ленты, выполнив следующие действия.Файлы кода, которые следует обновить, зависят от языка программирования и способа создания проекта:
В проектах 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 2012, выполните первые два действия в файле кода ленты (элемент_ленты.cs или элемент_ленты.vb), затем выполните остальные действия в файле с выделенным кодом ленты.
Чтобы изменить созданный код ленты
Измените объявление класса ленты, чтобы он был производным из Microsoft.Office.Tools.Ribbon.RibbonBase, а не из Microsoft.Office.Tools.Ribbon.OfficeRibbon.
Измените конструктор класса ленты, как показано ниже.Если в конструктор был добавлен собственный код, не изменяйте его.В проектах Visual Basic измените только конструктор без параметров.Игнорируйте другой конструктор.
В следующем примере кода показан конструктор по умолчанию для класса ленты в проекте, ориентированном на .NET Framework 3.5.
Public Sub New() MyBase.New() InitializeComponent() End Sub
public Ribbon1() { InitializeComponent(); }
В следующем примере кода показан конструктор по умолчанию для класса ленты в проекте, целевых объектов .NET Framework 4 или .NET Framework 4.5.
Public Sub New() MyBase.New(Globals.Factory.GetRibbonFactory()) InitializeComponent() End Sub
public Ribbon1() : base(Globals.Factory.GetRibbonFactory()) { InitializeComponent(); }
В методе InitializeComponent измените любой код элемента управления на ленте, чтобы в этом коде использовались вспомогательные методы объекта RibbonFactory.
Примечание В проектах Visual C# необходимо развернуть область Component Designer generated code, чтобы увидеть метод InitializeComponent.
Предположим, что в файле содержится следующая строка кода, которая создает экземпляр RibbonButton с именем button1 в проекте, ориентированном на .NET Framework 3.5.
Me.button1 = New Microsoft.Office.Tools.Ribbon.RibbonButton()
this.button1 = new Microsoft.Office.Tools.Ribbon.RibbonButton();
В проекте, целевых объектов .NET Framework 4 или .NET Framework 4.5, следует вместо этого использовать следующий код.
Me.button1 = Me.Factory.CreateRibbonButton()
this.button1 = this.Factory.CreateRibbonButton();
Полный список вспомогательных методов для элементов управления ленты см. в разделе Создание экземпляров элементов управления ленты.
В проектах Visual C# измените любую строку кода в методе InitializeComponent, в которой используется делегат EventHandler<TEventArgs>, чтобы использовать вместо него определенный делегат ленты.
Предположим, что в файле содержится следующая строка кода, которая обрабатывает событие RibbonButton.Click в проекте, ориентированном на .NET Framework 3.5.
this.button1.Click += new System.EventHandler<Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs>( this.button1_Click);
В проекте, целевых объектов .NET Framework 4 или .NET Framework 4.5, следует вместо этого использовать следующий код.
this.button1.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler( this.button1_Click);
Полный список делегатов ленты см. в разделе Обработка событий ленты.
В проектах Visual Basic найдите класс ThisRibbonCollection в конце файла.Измените объявление этого класса, чтобы он больше не наследовался из Microsoft.Office.Tools.Ribbon.RibbonReadOnlyCollection.
Создание экземпляров элементов управления ленты
Необходимо изменить любой код, который динамически создает элементы управления ленты.В проектах, ориентированных на .NET Framework 3.5, элементы управления ленты являются классами, экземпляры которых можно создавать напрямую в определенных сценариях.В проектах, целевой объект .NET Framework 4 или .NET Framework 4.5, эти элементы управления интерфейсы, которые нельзя создать напрямую.Необходимо создать элементы управления с помощью методов, предоставленных объектом RibbonFactory.
Существует два способа доступа к объекту RibbonFactory:
С помощью свойства Factory класса ленты.Этот подход следует применять в коде класса ленты.
С помощью метода Globals.Factory.GetRibbonFactory.Этот подход следует применять за пределами класса ленты.Дополнительные сведения о классе Globals см. в разделе Глобальный доступ к объектам в проектах Office.
В следующем примере кода показано, как создать объект RibbonButton в классе ленты в проекте, целевых объектов .NET Framework 4 или .NET Framework 4.5.
Dim button As Microsoft.Office.Tools.Ribbon.RibbonButton =
Me.Factory.CreateRibbonButton()
Microsoft.Office.Tools.Ribbon.RibbonButton button =
this.Factory.CreateRibbonButton();
В следующей таблице перечислены элементы управления можно создать программно и метод, используемый для создания элементов управления в проектах, целевой объект .NET Framework 4 или .NET Framework 4.5.
Элемент управления |
Метод RibbonFactory для использования в проектах .NET Framework 4 и .NET Framework 4.5 |
---|---|
Обработка событий ленты
Необходимо изменить любой код, который обрабатывает события элементов управления ленты.В проектах, ориентированных на .NET Framework 3.5, эти события обрабатываются общим делегатом EventHandler<TEventArgs>.В проектах, целевых объектов .NET Framework 4 или .NET Framework 4.5, эти события теперь обрабатывают другими делегатам.
В следующей таблице перечислены события ленты и делегаты, связанные с ними в проектах, целевой объект .NET Framework 4 или .NET Framework 4.5.
Событие |
Делегат, используемый в проектах .NET Framework 4 и .NET Framework 4.5 |
---|---|
Событие LoadImage в созданном классе ленты |
|
RibbonDropDown.SelectionChanged |
Программное указание положения компонента ленты
Необходимо изменить любой код, который задает положение групп, вкладок или элементов управления ленты.В проектах, ориентированных на .NET Framework 3.5, можно использовать методы AfterOfficeId и BeforeOfficeId статического класса Microsoft.Office.Tools.Ribbon.RibbonPosition для назначения свойства Position группы, вкладки или элемента управления.В проектах, целевой объект .NET Framework 4 или .NET Framework 4.5, необходимо получить эти методы задается с помощью свойства RibbonPosition объекта RibbonFactory.
Существует два способа доступа к объекту RibbonFactory:
С помощью свойства Factory класса ленты.Этот подход следует применять в коде класса ленты.
С помощью метода Globals.Factory.GetRibbonFactory.Этот подход следует применять за пределами класса ленты.Дополнительные сведения о классе Globals см. в разделе Глобальный доступ к объектам в проектах Office.
В следующем примере кода показано, как в проекте, ориентированном на .NET Framework 3.5 задать свойство Position для вкладки в классе ленты.
Me.tab1.Position = RibbonPosition.AfterOfficeId("TabHome")
this.tab1.Position = RibbonPosition.AfterOfficeId("TabHome");
В следующем примере кода показано выполнение той же задачи в проекте, ориентированном на .NET Framework 4.
Me.tab1.Position = Me.Factory.RibbonPosition.AfterOfficeId("TabHome")
this.tab1.Position = this.Factory.RibbonPosition.AfterOfficeId("TabHome");
См. также
Основные понятия
Перенос решений Office на платформу .NET Framework 4 или .NET Framework 4.5