[英]VSTO Excel preserve Ribbon state
我有帶有自定義功能區的簡單VSTO Excel 2013應用程序級加載項,其中包括切換按鈕和復選框。 如果打開兩個文件(工作簿),則可以看到功能區不會在多個窗口中保留其狀態,這意味着如果單擊第二個工作簿上的復選框或切換按鈕,則第一個工作簿上會顯示相同的復選框狀態,反之亦然。 我發現有一篇文章描述了Outlook的類似情況: https : //www.add-in-express.com/creating-addins-blog/2013/01/30/preserve-outlook-ribbon-controls-state/,但很遺憾檢查器窗口事件在Excel中不可用。 對如何處理有任何想法嗎?
您需要使用回調代替Ribbon XML中的屬性。 同樣,當用戶更改活動窗口時,您需要調用IRibbonUI界面的Invalidate / InvalidateControl方法來強制Office應用程序(在您的情況下為Excel)為控件的當前狀態調用回調。 很簡單
您可以在MSDN的以下系列文章中閱讀有關Ribbon UI(又稱Fluent UI)的更多信息:
另外,您可能會發現以下幫助:
我嘗試了一個帶有啟用了切換的切換按鈕的示例,然后切換到另一個工作簿,該切換按鈕不持久。 但是,如果您將按下的值存儲在變量中,並在切換按鈕的getPressed回調中返回該值,則它可以正常工作。
Ribbon.xml
<?xml version="1.0" encoding="UTF-8"?>
<customUI onLoad="Ribbon_Load" xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<tabs>
<tab idMso="TabAddIns">
<group id="group1" label="group1">
<toggleButton id="toggleButton1" label="toggleButton1" size="large" getPressed="buttonPressed" onAction="buttonAction"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Ribbon.cs
private bool isButtonPressed = false;
public void buttonAction(Office.IRibbonControl control, bool isPressed)
{
isButtonPressed = isPressed;
}
public bool buttonPressed(Office.IRibbonControl control)
{
return isButtonPressed;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.