>我正在使用带有 Excel 2013 VB.NET 的 VSTO。我正在开发一个应用程序级外接程序,但我无法使两个不同的工作簿存储不同的"功能区状态"。例如,当我想启用按钮时,我使用以下代码:
Globals.Ribbons.Ribbon1.myButton.Enable = False
这使得元素"myButton"在每个打开的工作簿上被禁用,但我想只对一个工作簿禁用它。
我现在正在做的方法是处理事件工作簿激活,以更改功能区状态。问题是:这样,用户就会在不位于顶部的其他工作簿中看到无效状态。
有一些更好的解决方法吗?没有办法管理功能区实例(而不仅仅是像我正在做的全局元素)?
谢谢
有一些更好的解决方法吗?没有办法管理功能区实例(而不仅仅是像我正在做的全局元素)?
您需要改用回调。尝试改用 getEnabled 回调。
此外,如果需要,可以使用 IRibbonUI 接口方法来强制 Office 应用程序更新 UI 控件。Invalid方法使功能区用户界面的所有控件的缓存值无效。请参阅 IRibbonUI 对象的概述 。
您可以在 MSDN 中的以下系列文章中阅读有关功能区 UI(也称为 Fluent UI)的详细信息:
- 为开发人员自定义 2007 Office Fluent 功能区(第 1 部分,共 3 部分)
- 为开发人员自定义 2007 Office Fluent 功能区(第 2 部分,共 3 部分)
- 为开发人员自定义 2007 Office Fluent 功能区(第 3 部分,共 3 部分)