首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Word插件功能区

Word插件功能区
EN

Stack Overflow用户
提问于 2015-06-15 18:03:33
回答 3查看 599关注 0票数 0

我在Word加载项功能区中创建了两个按钮: button1和button2

当我打开类型1的文档时,我只显示button1,当我打开第二种类型的文档时,我只显示button2。

问题是,当我打开第一个文档时,我让它保持打开状态,当我打开第二个类型的第二个文档后,我总是在功能区中找到button1。

如何强制第二个文档显示button2而不是button1,即使第一个文档仍处于打开状态。

EN

回答 3

Stack Overflow用户

发布于 2015-06-15 21:11:38

在文档更改事件期间,使功能区无效(刷新)。

代码语言:javascript
复制
private Office.IRibbonUI ribbon;
public void Ribbon_Load(Office.IRibbonUI ribbonUI)
{
Globals.ThisAddIn.Application.DocumentChange += DocumentChangeEvent;
}

private void DocumentChangeEvent()
{
ribbon.Invalidate();
}
票数 0
EN

Stack Overflow用户

发布于 2015-06-23 22:59:31

您需要在自定义UI的ribbon XML标记中定义getVisible回调。然后,当需要时,您可以通过调用IRibbonUI接口的InvalidateControlInvalidate方法来更新控件(实际上强制Word调用您的回调)。

您可以考虑使用Application类的WindowActivateDocumentChange事件来检查ribbon控件是否应该更新。如果是这样的话,调用Invalidate*方法。不要每次都调用这些方法。

若要将对性能的影响降至最低,请使用InvalidateControl方法而不是Invalidate方法,除非您确实需要使外接程序定义的所有自定义控件或菜单项无效。调用Invalidate会使外接程序定义的所有控件和菜单项失效,并且在打开的控件和菜单上发生回调。

阅读以下MSDN系列文章中有关Fluent UI (也称为Ribbon UI)的更多信息:

票数 0
EN

Stack Overflow用户

发布于 2016-06-24 01:35:34

应在窗口激活时使ribbon无效

代码语言:javascript
复制
public Office.IRibbonUI ribbon;

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
   this.Application.WindowActivate += new Word.ApplicationEvents4_WindowActivateEventHandler(DocumentActivate);
}

private void DocumentActivate(Word.Document doc, Word.Window win)
{
   ribbon.Invalidate();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30842383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档