如果项目包含使用 功能区(可视化设计器) 项目项创建的功能区自定义项,则必须对项目代码进行以下更改(如果目标框架更改为 .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 Studio 2008 中创建的 Visual C# 项目中,然后升级到 Visual Studio 2013,执行功能区代码文件中的前两个步骤(YourRibbonItem.cs 或 YourRibbonItem.vb),并在功能区代码隐藏文件中执行剩余的步骤。
更改生成的功能区代码
修改功能区类的声明,使其派生自
< a0/>。 修改功能区类的构造函数,如下所示。 如果已将自己的任何代码添加到构造函数,请不要更改代码。 在 Visual Basic 项目中,仅修改无参数构造函数。 忽略其他构造函数。
下面的代码示例演示面向 .NET Framework 3.5 的项目中功能区类的默认构造函数。
下面的代码示例演示面向 .NET Framework 4 或更高版本的项目中功能区类的默认构造函数。
在方法中
InitializeComponent,修改构造功能区控件的任何代码,以便代码改用对象的帮助程序方法 RibbonFactory 之一。注释
在 Visual C# 项目中,必须展开命名
Component Designer generated code区域才能查看该方法InitializeComponent。例如,假设文件包含以下代码行,用于实例化 RibbonButton 面向 .NET Framework 3.5 的项目中命名
button1的名称。在面向 .NET Framework 4 或更高版本的项目中,必须改用以下代码。
有关功能区控件的帮助程序方法的完整列表,请参阅 实例化功能区控件。
在 Visual C# 项目中,修改使用委托来改用
InitializeComponent特定功能区委托的方法中的任何EventHandler<TEventArgs>代码行。例如,假设文件包含以下代码行,用于处理 Click 面向 .NET Framework 3.5 的项目中的事件。
<CodeContentPlaceHolder>8 在面向 .NET Framework 4 或更高版本的项目中,必须改用以下代码。
<CodeContentPlaceHolder>9 有关功能区委托的完整列表,请参阅 “处理功能区事件”。
在 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 或更高版本的项目中创建功能区类。
<CodeContentPlaceHolder 10 >CodeContentPlaceHolder<>11 下表列出了可以编程方式创建的控件,以及用于在面向 .NET Framework 4 或更高版本的项目中创建控件的方法。
处理功能区事件
必须修改处理功能区控件事件的任何代码。 在面向 .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 项目中对象的全局访问。下面的代码示例演示如何在面向 .NET Framework 3.5 的项目的功能区类中设置
Position选项卡的属性。
下面的代码示例演示面向 .NET Framework 4 的项目中的相同任务。