以编程方式退出后台视图

Sli*_*SFT 2 c# excel vsto office-2013

我们有一个后台延伸与集成TabSaveidMso文件- >另存为)。

我们遇到的问题是,当我从后台单击按钮时 - 我不知道如何关闭后台视图。

我想出的最佳解决方案不是很健壮,所以我希望有人能有更好的方法来处理这个问题,因为关闭后台视图似乎相当直观。也许我错过了一些东西 - 但是一旦我的按钮触发,我就无法退出后台视图。

功能区 XML

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
    <backstage>
        <tab idMso="TabSave">
            <firstColumn>
                <taskFormGroup idMso="SaveGroup">
                    <category idMso="Save">
                        <task id="customTask" label="Custom Task" imageMso="HappyFace">
                            <group id="customGroup1" label="Custom Group">
                                <topItems>
                                    <labelControl id="lblInfo" label="Click to trigger custom action."/>
                                    <button id="btnCustomAction" style="large" label="Custom Action" imageMso="HappyFace" onAction="btnAction"/>
                                </topItems>
                            </group>
                        </task>
                    </category>
                </taskFormGroup>
            </firstColumn>
        </tab>
    </backstage>
</customUI>
Run Code Online (Sandbox Code Playgroud)

功能区回调

public void btnAction(Office.IRibbonControl control)
{
   Excel.Window window = control.Context;
   MessageBox.Show("custom action triggered");
   window.Application.SendKeys("{ESCAPE}");
}
Run Code Online (Sandbox Code Playgroud)

Sli*_*SFT 6

看起来该解决方案没有得到很好的宣传-isDefinitive按钮上有一个标志 ( ),一旦单击按钮就会自动关闭后台视图 - 而不是在操作完成时。

<button id="btnCustomAction" 
        style="large" 
        label="Custom Action" 
        imageMso="HappyFace" 
        isDefinitive="true"
        onAction="btnAction"/>
Run Code Online (Sandbox Code Playgroud)

从 MSDN

通过isDefinitive在自定义 UI XML 中设置控件的属性来关闭 Backstage 视图并返回到当前工作簿。