是的,您可以在单击“文件”菜单(显示 Backstage 视图)和单击视图的返回箭头以删除 Backstage 视图并显示文档时检测并执行代码。为此,请通过 VSTO 项目中的自定义 XML 功能区使用带有回调的onShow
和onHide
属性(这不适用于使用 Visual Designer 制作的功能区)。
参考资料可以在这里找到:
在后台视图首次显示或隐藏时执行操作
由于本文使用 VBA 来扩展所涉及的概念,我构建了一个示例项目来演示如何onShow
使用 C# 和 Word 2016 工作(文档是为 Office 2010 编写的,但onShow
将onHide
在更高版本的 Word 中工作)。
解决方案树
自定义 XML 功能区 (BackstageRibbon.xml)
请注意,<backstage>
激活onShow
回调属性的<ribbon>
节点位于 XML 中的节点之后。
<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"
onLoad="Ribbon_Load">
<ribbon>
<!--Ribbon XML goes here-->
</ribbon>
<backstage onShow="onShow">
</backstage>
</customUI>
功能区代码 (BackstageRibbon.cs)
这段代码中有一部分是样板代码,但它是基于功能区自定义 XML 中public void onShow
的属性执行代码的回调。onShow
此外,public string GetCustomUI
是告诉 C# 查找 XML 的地方。
namespace Backstage_Events
{
[ComVisible(true)]
public class BackstageRibbon : Office.IRibbonExtensibility
{
private Office.IRibbonUI ribbon;
public BackstageRibbon()
{
}
#region IRibbonExtensibility Members
public string GetCustomUI(string ribbonID)
{
return GetResourceText("Backstage_Events.BackstageRibbon.xml");
}
#endregion
#region Ribbon Callbacks
//Create callback methods here. For more information about adding callback methods, visit https://go.microsoft.com/fwlink/?LinkID=271226
public void Ribbon_Load(Office.IRibbonUI ribbonUI)
{
this.ribbon = ribbonUI;
}
public void onShow(object contextObject)
{
//Code to be executed before Backstage View displays goes here
MessageBox.Show("Backstage Display Event Triggered!");
}
#endregion
Helpers //Region
}
}
ThisAddin.cs
您还需要添加:
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
{
return new BackstageRibbon();
}
在类中的ThisAddIn_Startup
和ThisAddIn_Shutdown
私有空隙之后ThisAddin.cs
实例化自定义功能区。