如何使用应用程序级外接程序更改单个Excel实例的功能区元素?

时间:2015-03-16 23:32:45

标签: vb.net excel vsto state ribbon

我正在使用VSTO和VB.NET for Excel 2013.我正在开发一个应用程序级别的加载项,但是我不能让两个不同的工作簿存储不同的"功能区状态&#34 ;.例如,当我想启用按钮时,我使用以下代码:

Globals.Ribbons.Ribbon1.myButton.Enable = False

这使元素" myButton"要在每个打开的工作簿上禁用,但我想仅为一个工作簿禁用它。

我现在的做法是处理事件WorkbookActivate,以更改功能区状态。问题是:这样,用户在其他不在顶部的工作簿上看到无效状态。

有一些更好的解决方法吗?没有办法管理功能区实例(而不仅仅是我正在做的全局元素)?

由于

1 个答案:

答案 0 :(得分:0)

  

有一些更好的解决方法吗?没有办法管理功能区实例(而不仅仅是我正在做的全局元素)?

您需要使用回调。请尝试使用getEnabled回调。

此外,在需要时,您可以使用IRibbonUI接口方法强制Office应用程序更新UI控件。 Invalidate方法使Ribbon用户界面的所有控件的缓存值无效。请参阅Overview of the IRibbonUI Object

您可以在MSDN的以下系列文章中阅读有关Ribbon UI(又名Fluent UI)的更多信息: