广百中怡店有哪些品牌:细品RibbonX(48):在Visual Studio中自定义Office 2007用户界面的快速访问工具栏(QAT)

来源:百度文库 编辑:中财网 时间:2024/04/28 16:43:58
在Microsoft Office 2007中自定义快速访问工具栏,仅需要几行XML和编程代码。
概述
2007 Microsoft Office Fluent用户界面(UI)使用更简单的设计代替了当前系统的层级菜单、工具栏和任务窗格,使得操作更有效率。Office Fluent Ribbon、快捷菜单、快速访问工具栏和Offce菜单是Office Fluent UI的所有组成部分。可以在Office Fluent Ribbon中添加很多的自定义控件和内置控件,例如按钮、复选框和组合框。
通过使用XML标记元素,在Office Fluent Ribbon中添加组件,并且通过属性来设置这些组件的属性,通过使用任何Microsoft Visual Studio支持的编程语言,例如Visual Basic和Visual C#、以及VBA、Visual C++、Visual Basic 6.0来赋予这些组件功能。
使用XML添加控件
XML提供了Office Fluent用户界面层级的、公开的模型。通过使用XML元素指定组件的类型,可以在功能区中添加控件(例如按钮),例如可以使用button元素添加一个按钮,通过使用属性例如label属性给控件赋属性值。
下面是用于自定义Office Fluent UI的XML的示例,在Excel 2007中通过添加提供内置复制功能的按钮和内置粘贴功能的按钮来自定义QAT。

该示例首先设置ribbon元素的startFromScratch属性为true,设置该属性使Office Fluent Ribbon在“start from scratch”模式下,隐藏了所有内置选项卡。接着,通过在代码中添加qat元素,创建对QAT的引用。然后,添加sharedControls元素封装QAT中任何自定义控件。最后,添加两个按钮,一个是内置的复制功能,一个是内置的粘贴功能。
结果如下图所示。

注:通过使用idMso属性,可以告诉控件引用内置于Microsoft Office里的功能,包括Mso后缀的属性名称总是指向包含在Microsoft Office里的功能和资源。相反,使用id属性代表自定义控件。
有两种方式来自定义Office Fluent UI:

  • 修改支持Office Fluent UI的Office应用程序所创建的Office Open XML格式文件。
  • 使用加载项。

可以根据定制用户界面的需要来选择技术。例如,修改基于Office Open XML格式文件是文档级定制,所定制的Office Fluent Ribbon仅与特定的文档相关,而不是整个应用程序;通过使用加载项,将获取应用程序级的定制,这意味着定制的Ribbon将应用到整个应用程序中,而不管打开哪个文档。
使用Office Open XML格式文件创建定制的Ribbon
1、通过改变文件的扩展名,使之成为一个压缩文件(.zip),然后打开该文件。
2、添加一个包含XML定制代码的文件夹。
3、修改该文档相联系的文件来指向自定义文件夹。
4、改变该文档的扩展名。
5、在Office应用程序里打开该文档。
6、添加代码到文档中,提供自定义用户界面的功能。
使用加载项
使用加载项定制用户界面也简单。在创建加载项工程后,实现IRibbonExtensibility接口,包括Microsoft.Office.Core命名空间。该接口包含一个名为GetCustomUI方法,使用该方法返回XML定制代码。然后添加编程过程,提供自定义用户界面的功能。
自定义QAT
创建在功能区中添加自定义按钮的加载项解决方案。
1、开启Visual Studio 2008。
2、在“文件”菜单中,单击“新建项目”。
3、在“新建项目”对话框中,在“项目类型”窗格中,展开“Office”节点,并选择“2007”,然后选择“Excel 2007外接程序”。
4、在名称框中,输入CustomQATSample,然后单击“确定”创建项目。
5、在“解决方案资源管理器”中的项目名上单击右键,选择“添加—新建项”。在“添加新项”对话框中选择“功能区(XML)”,使用默认的名称,单击“确定”。
6、在“解决方案资源管理器”中的项目名上单击右键,选择“属性”,打开项目属性窗口,并选择“资源”选项卡。将“解决方案资源管理器”中的Ribbon1.xml拖到资源窗口中。
7、编辑Ribbon1.xml的默认代码为自定义代码:

  

8、将Ribbon1.vb中顶部声明行中的代码复制到ThisAddIn.vb中,并取消注释。
9、保存并按F5启动调试,结果如上图所示。