簡體   English   中英

按需加載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.找不到它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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM