演练:使用功能区 XML 创建自定义选项卡
此演练演示如何使用**“功能区(XML)”**项创建自定义功能区选项卡。
**适用于:**本主题中的信息适用于以下应用程序的文档级项目和应用程序级项目:Excel 2007 和 Excel 2010;InfoPath 2010;Outlook 2007 和 Outlook 2010;PowerPoint 2007 和 PowerPoint 2010;Project 2010;Visio 2010;Word 2007 和 Word 2010。有关更多信息,请参见按 Office 应用程序和项目类型提供的功能。
本演练阐释了以下任务:
将按钮添加到**“外接程序”**选项卡上。 **“外接程序”**选项卡是在功能区 XML 文件中定义的默认选项卡。
使用**“外接程序”**选项卡上的按钮实现 Microsoft Office Word 的自动化。
提示
以下说明中的某些 Visual Studio 用户界面元素在计算机上出现的名称或位置可能会不同。 您安装的 Visual Studio 版本以及使用的设置决定了这些元素。 有关更多信息,请参见 使用设置。
系统必备
您需要以下组件来完成本演练:
-
Visual Studio 2010 的一个版本,其中包含 Microsoft Office 开发工具。有关更多信息,请参见[将计算机配置为开发 Office 解决方案](bb398242\(v=vs.100\).md)。
- Microsoft Office Word 2007 或 Word 2010。
有关相关视频演示,请参见 How Do I: Use the Ribbon Designer to Customize the Ribbon in Excel?(如何实现:使用功能区设计器在 Excel 中自定义功能区?)
创建项目
第一步是创建 Word 外接程序项目。 然后自定义此文档的**“外接程序”**选项卡。
创建新项目
创建一个名为 MyRibbonAddIn 的**“Word 外接程序”**项目。
有关更多信息,请参见如何:在 Visual Studio 中创建 Office 项目。
Visual Studio 打开 ThisAddIn.cs 或 ThisAddIn.vb 代码文件,并将**“MyRibbonAddIn”(我的功能区外接程序)项目添加到“解决方案资源管理器”**中。
创建“外接程序”选项卡
若要创建**“外接程序”选项卡,请将一个“功能区(XML)”**项添加到您的项目。 在此演练后面的部分,您将在此选项卡上添加一些按钮。
创建“外接程序”选项卡
在**“项目”菜单上,单击“添加新项”**。
在**“添加新项”对话框中,选择“功能区(XML)”**。
将新功能区更名为 MyRibbon,然后单击**“添加”**。
MyRibbon.cs 或 MyRibbon.vb 文件在设计器中打开。 名为 MyRibbon.xml 的 XML 文件也将添加到项目中。
在**“解决方案资源管理器”中右击“ThisDocument.cs”或“ThisDocument.vb”,然后单击“查看代码”**。
向**“ThisAddin”**类中添加下面的代码。 这段代码重写 CreateRibbonExtensibilityObject 方法,将功能区 XML 类返回给 Office 应用程序。
Protected Overrides Function CreateRibbonExtensibilityObject() As _ Microsoft.Office.Core.IRibbonExtensibility Return New MyRibbon() End Function
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject() { return new MyRibbon(); }
在**“解决方案资源管理器”中,右击“MyRibbonAddIn”(我的功能区外接程序)项目,然后单击“生成”**。 验证项目已生成且未发生错误。
将按钮添加到“外接程序”选项卡上
此外接程序的目的是向用户提供一种将样本文字和特定表添加到活动文档的方法。 若要提供用户界面,请通过修改功能区 XML 文件来向**“外接程序”**选项卡添加两个按钮。 在此演练后面的部分中,您将为这两个按钮定义回调方法。 有关功能区 XML 文件的更多信息,请参见 功能区 XML。
向“外接程序”选项卡添加按钮
在**“解决方案资源管理器”中,右击“MyRibbon.xml”,然后单击“打开”**。
用以下 XML 替换 tab 元素的内容。 此 XML 可以将默认控件组的标签更改为**“Content”(内容),并添加两个标签为“Insert Text”(插入文本)和“Insert Table”(插入表)**的新按钮。
<tab idMso="TabAddIns"> <group id="ContentGroup" label="Content"> <button id="textButton" label="Insert Text" screentip="Text" onAction="OnTextButton" supertip="Inserts text at the cursor location."/> <button id="tableButton" label="Insert Table" screentip="Table" onAction="OnTableButton" supertip="Inserts a table at the cursor location."/> </group> </tab>
使用按钮实现文档自动化
必须为**“Insert Text”和“Insert Table”**按钮添加 onAction 回调方法,使其可以在用户单击时执行操作。 有关功能区控件回调方法的更多信息,请参见 功能区 XML。
为按钮添加回调方法
在**“解决方案资源管理器”中,右击“MyRibbon.cs”或“MyRibbon.vb”,然后单击“打开”**。
将以下代码添加到 MyRibbon.cs 或 MyRibbon.vb 文件的开头部分。 这些代码将为 Microsoft.Office.Interop.Word 命名空间创建一个别名。
Imports Word = Microsoft.Office.Interop.Word
using Word = Microsoft.Office.Interop.Word;
将下面的方法添加到 MyRibbon 类中。 这是**“Insert Text”**按钮的回调方法,它将一个字符串添加到活动文档中光标的当前位置处。
Public Sub OnTextButton(ByVal control As Office.IRibbonControl) Dim currentRange As Word.Range = Globals.ThisAddIn.Application.Selection.Range currentRange.Text = "This text was added by the Ribbon." End Sub
public void OnTextButton(Office.IRibbonControl control) { Word.Range currentRange = Globals.ThisAddIn.Application.Selection.Range; currentRange.Text = "This text was added by the Ribbon."; }
将下面的方法添加到 MyRibbon 类中。 这是**“Insert Table”**按钮的回调方法,它将一个表添加到活动文档中光标的当前位置处。
Public Sub OnTableButton(ByVal control As Office.IRibbonControl) Dim missing As Object = System.Type.Missing Dim currentRange As Word.Range = Globals.ThisAddIn.Application.Selection.Range Dim newTable As Word.Table = Globals.ThisAddIn.Application.ActiveDocument.Tables.Add( _ currentRange, 3, 4) ' Get all of the borders except for the diagonal borders. Dim borders() As Word.Border = New Word.Border(6) {} borders(0) = newTable.Borders(Word.WdBorderType.wdBorderLeft) borders(1) = newTable.Borders(Word.WdBorderType.wdBorderRight) borders(2) = newTable.Borders(Word.WdBorderType.wdBorderTop) borders(3) = newTable.Borders(Word.WdBorderType.wdBorderBottom) borders(4) = newTable.Borders(Word.WdBorderType.wdBorderHorizontal) borders(5) = newTable.Borders(Word.WdBorderType.wdBorderVertical) ' Format each of the borders. For Each border As Word.Border In borders border.LineStyle = Word.WdLineStyle.wdLineStyleSingle border.Color = Word.WdColor.wdColorBlue Next End Sub
public void OnTableButton(Office.IRibbonControl control) { object missing = System.Type.Missing; Word.Range currentRange = Globals.ThisAddIn.Application.Selection.Range; Word.Table newTable = Globals.ThisAddIn.Application.ActiveDocument.Tables.Add( currentRange, 3, 4, ref missing, ref missing); // Get all of the borders except for the diagonal borders. Word.Border[] borders = new Word.Border[6]; borders[0] = newTable.Borders[Word.WdBorderType.wdBorderLeft]; borders[1] = newTable.Borders[Word.WdBorderType.wdBorderRight]; borders[2] = newTable.Borders[Word.WdBorderType.wdBorderTop]; borders[3] = newTable.Borders[Word.WdBorderType.wdBorderBottom]; borders[4] = newTable.Borders[Word.WdBorderType.wdBorderHorizontal]; borders[5] = newTable.Borders[Word.WdBorderType.wdBorderVertical]; // Format each of the borders. foreach (Word.Border border in borders) { border.LineStyle = Word.WdLineStyle.wdLineStyleSingle; border.Color = Word.WdColor.wdColorBlue; } }
测试外接程序
运行该项目时,将打开 Word 并且在功能区上显示名为**“外接程序”的选项卡。 单击“外接程序”选项卡上的“Insert Text”和“Insert Table”**按钮测试代码。
测试外接程序
按 F5 运行项目。
确认功能区上是否显示了**“外接程序”**选项卡。
单击**“外接程序”**选项卡。
确认功能区上是否显示了**“Content”**组。
单击**“Content”组中的“Insert Text”**按钮。
将向文档中光标的当前位置处添加一个字符串。
单击**“Content”组中的“Insert Table”**按钮。
将向文档中光标的当前位置处添加一个表格。
后续步骤
可从以下主题了解有关如何自定义 Office 用户界面的更多信息:
自定义另一个 Office 应用程序的功能区。 有关支持自定义功能区的应用程序的更多信息,请参见 功能区概述。
使用功能区设计器自定义 Office 应用程序的功能区。 有关更多信息,请参见功能区设计器。
创建自定义操作窗格。 有关更多信息,请参见操作窗格概述。
使用 Outlook 窗体区域自定义 Microsoft Office Outlook 的用户界面。 有关更多信息,请参见演练:设计 Outlook 窗体区域。