簡體   English   中英

VSTO Excel保留功能區狀態

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

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