我想在我的Excel插件中添加功能,以便我可以根据需要加载不同的色带。
目前我正在尝试将功能区导出为XML并加载
private Microsoft.Office.Core.IRibbonExtensibility ribbonObj;
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
{
DialogResult RibbonToLoad = MessageBox.Show("Yes = V2 No = V3", "Select Version", MessageBoxButtons.YesNo);
switch (RibbonToLoad)
{
case DialogResult.Yes:
ribbonObj = new RibbonV2();
return ribbonObj;
case DialogResult.No:
ribbonObj = new RibbonV3();
return ribbonObj;
}
return new RibbonV2();
}
这个问题是我找不到如何切换这个功能区。我在Globals.
对象中找不到它。
我也试过没有导出到XML,但是在运行时我也无法按需加载不同的功能区(例如,点击WPF窗口上的按钮......)
知道如何获得这个吗?我想有可能在同一个插件上加载不同的色带(但一次只能出现一个)
答案 0 :(得分:1)
您无法管理加载功能区控件的过程。但您可以在运行时更改控件的可见性。 IRibbonUI接口提供Invalidate和InvalidateControl方法,允许触发您可以在运行时更改可见性的回调(getVisible)。
在以下示例中,启动主机应用程序会触发onLoad事件过程,然后该过程将调用创建表示Ribbon UI的对象的过程。接下来,定义了一个回调过程,该过程使UI上的所有控件无效,然后刷新UI。
以下是Office加载自定义功能区的XML标记:
<customUI … onLoad=”MyAddInInitialize” …>
以下是onLoad事件的回调方法:
Dim MyRibbon As IRibbonUI
Sub MyAddInInitialize(Ribbon As IRibbonUI)
Set MyRibbon = Ribbon
End Sub
Sub myFunction()
‘ Invalidates the caches of all of this add-in’s controls
MyRibbon.Invalidate()
End Sub
您可以在MSDN中的以下系列文章中阅读有关功能区UI的更多信息: