[英]How can I disable Word's built-in Ribbon Tabs when a specific document is loaded?
我现在正在使用以下代码:
<?xml version="1.0" encoding="UTF-8"?>
<customUI onLoad="Ribbon_Load" xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<commands>
<command idMso="Font" enabled="false"/>
<command idMso="AlignLeft" enabled="false"/>
<command idMso="AlignCenter" enabled="false"/>
<command idMso="AlignRight" enabled="false"/>
</commands>
等等,但这显然完全禁用了按钮。 我现在想限制我的用户在加载特定文档时不能使用某些内置的Word控件,并让他们可以在其余时间自由进行操作。 我尝试使用:
<command idMso="FontSize" getEnabled="checkDisable"/>
其中checkDisable
检查打开了哪些文档。 然后在该文档中搜索一个字符串(这就是我想禁用按钮的方式),但是在实际加载该文档之前会触发checkDisable回调。 我能以某种方式直接禁用代码背后的特定按钮,而不仅仅是通过XML吗? 如果可以这样做,则可以禁用DocumentLoaded事件上的按钮。
任何建议都值得赞赏,我一直在脑海中摸索着这个头几个小时。
您在正确的道路上。 您需要使用回调而不是属性。 但是Office会缓存这些值,并且不会在每次需要时都调用回调。 相反,要刷新UI(强制Office应用程序调用回调),您需要使用IRibbonUI界面的Invalidate或InvalidateControl方法。 有关更多信息,请参见IRibbonUI对象概述 。
例如,当您在宿主应用程序中打开新文档时,将触发Open事件。 您可以检出Document并调用Invalidate方法(如果需要)以强制主机应用程序调用您的回调,从而刷新UI。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.