[英]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.
找不到它Globals.
宾语。
我也尝试不导出到XML,但是在运行时我无法实现按需加载其他功能区(例如,单击WPF窗口上的按钮...)
任何想法如何得到这个? 我想在同一个插件上加载不同的功能区(但是一次只能出现一个)
您无法管理加载功能区控件的过程。 但是您可以在运行时更改控件的可见性。 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的以下系列文章中阅读有关Ribbon UI的更多信息:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.