VSTO-Word和Excel的共享加载项,用于修改功能区

VSTO-Word和Excel的共享加载项,用于修改功能区,excel,ms-word,vsto,ms-office,Excel,Ms Word,Vsto,Ms Office,我已经成功地在VisualStudio2008中使用Excel和Word加载项模板创建了一个添加到功能区的项目,但是我在共享加载项方面遇到了困难。我创建了一个外接程序,它使用xml文件修改并添加到功能区中,我可以从添加的按钮中捕获事件,但我一辈子都不知道如何在按钮启动并运行后隐藏按钮或添加控件。基本上,我需要对ribbon进行某种引用,而我所能得到的只是对实现IRibbonUi的对象的引用,这没有帮助。有没有人有好的共享加载项示例或建议?有两种可能的方法来控制功能区控件的可见性。您可以使用vis

我已经成功地在VisualStudio2008中使用Excel和Word加载项模板创建了一个添加到功能区的项目,但是我在共享加载项方面遇到了困难。我创建了一个外接程序,它使用xml文件修改并添加到功能区中,我可以从添加的按钮中捕获事件,但我一辈子都不知道如何在按钮启动并运行后隐藏按钮或添加控件。基本上,我需要对ribbon进行某种引用,而我所能得到的只是对实现IRibbonUi的对象的引用,这没有帮助。有没有人有好的共享加载项示例或建议?

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

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

<button id="MyButton" label="Hello" onAction="MyButtonOnAction"/>
使用此方法,您可以根据是否要显示/隐藏按钮返回true或false。您可能会遇到的下一个问题是,在加载外接程序之后,MyButtonGetVisible回调只调用过一次。我想稍后显示/隐藏按钮,如何触发回调

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

至于在运行中添加控件,我认为这是不可能的

我建议提供更多资源:

谢谢,getVisible回调和InvalidateControl调用正是我们最终要做的。最后唯一的痛苦是,当我们重写“打开文件”按钮时,ctrl-o快捷键将调用word中的代码,而不是Excel中的代码。我们能找到的最好的结果是Excel团队没有实现这一点。
<button id="MyButton" label="Hello" onAction="MyButtonOnAction" visible="false"/>
<button id="MyButton" label="Hello" onAction="MyButtonOnAction" getVisible="MyButtonGetVisible"/>
bool MyButtonGetVisible(IRibbonControl control)