excel - VSTO - Word 和 Excel 的共享插件以修改功能区

标签 excel ms-word vsto ms-office

我已成功使用 Visual Studio 2008 中的 Excel 和 Word 插件模板创建了一个添加到功能区的项目,但我在使用共享插件时遇到了困难。我创建了一个插件,它使用 xml 文件来修改和添加到功能区,我可以从添加的按钮中捕获事件,但我一生无法弄清楚如何隐藏按钮或添加控件。启动并运行。基本上我需要某种对功能区的引用,而我所能得到的只是对实现 IRibbonUi 的对象的引用,这无济于事。有没有人有任何好的共享加载项示例或建议?

最佳答案

有两种可能的方法来控制功能区控件的可见性。您可以使用 visible 属性或 getVisible 事件。这两种方法都需要修改您已经在使用的 xml 文件。

如果这是您现在的部分 xml 文件:

<button id="MyButton" label="Hello" onAction="MyButtonOnAction"/>

然后,您可以通过将控件更改为:
<button id="MyButton" label="Hello" onAction="MyButtonOnAction" visible="false"/>

这没什么用,因为它是硬编码的。为了更接近您要查找的内容,请将 xml 更改为:
<button id="MyButton" label="Hello" onAction="MyButtonOnAction" getVisible="MyButtonGetVisible"/>

然后以与完成 MyButtonOnAction 回调相同的方式创建 MyButtonGetVisible 回调,该回调恰好具有此签名(C#):
bool MyButtonGetVisible(IRibbonControl control)

使用此方法,您可以根据是否要显示/隐藏按钮返回 true 或 false。您可能遇到的下一个问题是,MyButtonGetVisible 回调仅在加载我的加载项后立即调用一次。我想稍后显示/隐藏按钮,如何让回调触发?

为此,您可以使用您拥有的 IRibbonUI 对象并调用 Invalidate 函数,这将导致整个功能区失效,这将导致调用回调。如果您需要更精细的控制,您可以调用 InvalidateControl 函数,该函数将 ControlID 作为参数,并且只会使一个控件无效,这将导致调用回调。

至于即时添加控件,我认为这是不可能的。

我建议的其他资源:
Part 1
Part 2
Part 3

关于excel - VSTO - Word 和 Excel 的共享插件以修改功能区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1133846/

相关文章:

vba - 有关调试特定于机器的 Excel VBA 问题的建议

c# - VSTO 合并单元格

C# VSTO Outlook 2007 : Strange difference between HKLM and HKCU

excel - Office 脚本,忽略删除范围名称,没有错误

date - 在Excel中使用vba向日期添加x天数

javascript - 如何获取Word文档的标题及其样式名称?

ms-word - 我有一个 VSTO 应用程序作为 MS Word 的加载项,我想为功能区按钮设置键盘快捷键

html - 如何在从 HTML 生成的 Word 中显示图像?

c# - 获取异常 system.AppDomainUnloadedexception : the application domain in which thread was running has been unloaded

arrays - VBA 在数组中搜索数组? (检查一个数组的所有项是否存在于另一个数组中)