如何重新觸發GetCustomUI()我已經在ExcelDNA,創建(延長ExcelRibbon)自定義功能區,並覆蓋了GetCustomUI()方法來創建一個字符串列表的菜單控制。基本上:從ExcelDNA
public override string GetCustomUI(string RibbonID)
{
string customUIXml =
@"<customUI xmlns='http://schemas.microsoft.com/office/2006/01/customui' loadImage='LoadImage' onLoad='OnRibbonLoaded' >
<ribbon>
<tabs>
<tab id='CustomTab' label='My Dynamic Tab'>
<group id='SampleGroup' label='My Sample Group'>
<menu description='description' enabled='true' id='menuItem' visible='true' size='normal' >";
foreach (string itemName in _ItemNameList)
customUIXml += $"<button id='btn_tool_{itemName}' label='{itemName}' onAction='MyMethod' />";
customUIXml +=
@"</menu>
</group >
</tab>
</tabs>
</ribbon>
</customUI>";
return customUIXml;
}
由於_ItemNameList
從一個不同的文件/系統檢索,我不能這個customUI標籤直接放入。DNA文件(據我所知),因此我經由建立它上負載GetCustomUI()。
作爲概念證明,onAction
方法將在用戶單擊菜單項時向_ItemNameList
添加一個新項目。
但我如何獲得Excel中,以便在XML重建再次呼籲GetCustomUI?
我已經試過無效帶狀物體本身,但是這不會觸發Excel將再次調用GetCustomUI。
我能想到的(儘管我仍然對此進行測試)是創建具有無形的「佔位」按鈕的整個負載的菜單(通過指定getVisible回調),當用戶點擊退而求其次一個按鈕,就無效,需要現在變得可見,顯示出加_ItemNameList
新項目的按鈕。我仍然需要考慮如何獲得正確的按鈕引用,儘管...這也感覺有點骯髒。
任何想法如何讓Excel重建色帶? 也給其他的想法開放,讓我的項目添加到菜單中的ExcelRibbon。