[英]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.