按需加载 excel 色带
Load excel Ribbon on demand
我想为我的 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 上的按钮 window...)
知道如何得到这个吗?我希望有可能在同一个插件上加载不同的色带(但一次只会出现一个)
您无法管理加载功能区控件的过程。但是您可以在运行时更改控件的可见性。 IRibbonUI 接口提供 Invalidate 和 InvalidateControl 方法,允许触发回调,您可以在运行时更改可见性 (getVisible)。
在下面的示例中,启动主机应用程序会触发 onLoad 事件过程,然后调用一个过程来创建表示功能区的对象 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 的更多信息:
我想为我的 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 上的按钮 window...)
知道如何得到这个吗?我希望有可能在同一个插件上加载不同的色带(但一次只会出现一个)
您无法管理加载功能区控件的过程。但是您可以在运行时更改控件的可见性。 IRibbonUI 接口提供 Invalidate 和 InvalidateControl 方法,允许触发回调,您可以在运行时更改可见性 (getVisible)。
在下面的示例中,启动主机应用程序会触发 onLoad 事件过程,然后调用一个过程来创建表示功能区的对象 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 的更多信息: