我已成功使用Visual Studio 2008中的Excel和Word插件模板来创建添加到功能区的项目,但我在共享插件时遇到困难。我创建了一个使用xml文件来修改和添加到功能区的添加,我可以从添加的按钮中捕获事件,但我不能为我的生活找出如何隐藏按钮或添加控件一旦它是启动并运行。基本上我需要对功能区进行某种引用,而我所能得到的只是对实现IRibbonUi的对象的引用,这对它没有帮助。有没有人有任何好的共享插件示例或建议?
答案 0 :(得分:2)
有两种方法可以控制功能区控件的可见性。您可以使用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作为参数,并且只会使一个控件无效,这将导致调用回调。
至于动态添加控件,我认为不可能。