【发布时间】:2021-04-29 18:57:08
【问题描述】:
我需要编写一个 Word 插件(支持 2013+),以根据当前打开的文档的路径(例如存储位置)有条件地禁用“另存为”选项/选项卡。
我正在使用 C# 并且有以下 xml,它会禁用选项卡,但遗憾的是,每个文档都会这样做:
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<backstage>
<button idMso="FileSaveAs" visible="false"/>
<tab idMso="TabSave" visible="false"/>
</backstage>
</customUI>
我试过了:
- DocumentBeforeSave-Handler:让我显示一个错误对话框,但不隐藏“另存为”
- 在 xml 中使用 getVisible 而不是 visible 来引用回调:回调从未被调用,即使在通过ribbon.Invalidate() 使功能区失效后也不会调用
非常感谢您的帮助。谢谢。
【问题讨论】:
-
您使用的是哪种插件技术?使用 getVisible 或 getEnabled 回调将是您唯一的选择。通过回调向我们展示您的解决方案中用于处理功能区的相关代码。另请注意:文件菜单中的某些命令无法删除,但可以禁用。也试试 getEnabled,看看是否可行。
-
请注意,您在加载项中执行的任何操作都将应用于所有文档。只有保存在 in 文档中的功能区自定义才会应用于该文档。功能区自定义可以通过其 Open XML 文件格式添加到文档中,例如使用 Open XML SDK。
-
@CindyMeister:我认为内置命令(如“另存为”)不支持“getVisible”/“getEnabled”回调。
-
感谢辛迪和尼古拉的澄清!如果我不能在不向每个文档添加自定义的情况下更改每个文档的功能区,那么这个问题就得到了回答。
-
我并不是说你不能 - 我只是说在文档中保存功能区自定义是将某些内容直接关联/链接到文档的唯一方法。应该可以使用代码以某种形式动态地完成它。但是您确实需要提供我要求的其他信息,以便我们有一个有效的起点。
标签: c# ms-word ribbon office-addins