我正在使用VSTO和VB.NET for Excel 2013.我正在开发一个应用程序级别的加载项,但是我不能让两个不同的工作簿存储不同的"功能区状态&#34 ;.例如,当我想启用按钮时,我使用以下代码:
Globals.Ribbons.Ribbon1.myButton.Enable = False
这使元素" myButton"要在每个打开的工作簿上禁用,但我想仅为一个工作簿禁用它。
我现在的做法是处理事件WorkbookActivate,以更改功能区状态。问题是:这样,用户在其他不在顶部的工作簿上看到无效状态。
有一些更好的解决方法吗?没有办法管理功能区实例(而不仅仅是我正在做的全局元素)?
由于
答案 0 :(得分:0)
有一些更好的解决方法吗?没有办法管理功能区实例(而不仅仅是我正在做的全局元素)?
您需要使用回调。请尝试使用getEnabled回调。
此外,在需要时,您可以使用IRibbonUI接口方法强制Office应用程序更新UI控件。 Invalidate方法使Ribbon用户界面的所有控件的缓存值无效。请参阅Overview of the IRibbonUI Object。
您可以在MSDN的以下系列文章中阅读有关Ribbon UI(又名Fluent UI)的更多信息: