我有簡單的VSTO Excel 2013應用程序級別的加載項與自定義功能區,其中包括切換按鈕和複選框。如果我打開兩個文件(工作簿),我可以看到Ribbons不會保留多個窗口的狀態,這意味着如果我單擊第二個工作簿上的複選框或切換按鈕,則會在第一個工作簿中顯示相同的複選框狀態,反之亦然。我找到了一篇描述Outlook類似情況的文章:https://www.add-in-express.com/creating-addins-blog/2013/01/30/preserve-outlook-ribbon-controls-state/,但不幸Inspector窗口事件在Excel中不可用。有關如何處理它的任何想法?VSTO Excel保留功能區狀態
回答
您需要在Ribbon XML中使用回調而不是屬性。另外,當用戶更改活動窗口時,您需要調用IRibbonUI界面的Invalidate/InvalidateControl方法來強制Office應用程序(在您的情況下爲Excel)調用您的回調以獲取控件的當前狀態。這是很容易...
您可以在MSDN中的以下系列文章閱讀更多有關的Ribbon UI(又名流利UI):
- Customizing the 2007 Office Fluent Ribbon for Developers (Part 1 of 3)
- Customizing the 2007 Office Fluent Ribbon for Developers (Part 2 of 3)
- Customizing the 2007 Office Fluent Ribbon for Developers (Part 3 of 3)
另外您可能會發現以下幾條有用:
尤金你好,我看到你的答案之前,但是我已經在設計器中創建一個功能區,除非我是完全錯誤的問題與更多的是In-Active而不是Active窗口。特別是當活動窗口功能區狀態發生更改時,它也反映在In-Active窗口中。如果它不是很大的麻煩你能否在這裏放幾行,因爲這是常見的問題,並會幫助所有的插件開發。謝謝 – Jim
似乎我需要在博客文章中詳細描述它......沒有辦法更新功能區控件的非活動狀態。你無法控制。唯一可能的方法是在切換到另一個/本工作簿時使用回調。 –
我明白了,所以基本上我們都遇到了這個問題,我確實在活動窗口功能區狀態下有適當的激活和啓用狀態,所以問題更像是一個化妝品功能。 – Jim
我試圖使樣品與對撥動開關按鈕,然後切換到另一個工作簿切換按鈕犯規持續。但是,如果您將按下的值存儲在一個變量中,並將其返回到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;
}
- 1. VSTO XML功能區 - 是否有一個功能區實例?
- 2. VSTO Excel Com添加功能區無法加載
- 3. 保護Excel自定義UI功能區
- 4. Excel 2007功能區
- 5. 啓用VSTO功能區選項卡
- 6. 保留複選框狀態
- 7. 保留Android活動狀態
- 8. 保留Kendo Grid狀態
- 9. 保留頁面狀態
- 10. VSTO Microsoft Office Outlook 2013 Addins保持禁用功能區
- 11. VBA的Excel - 功能滯留
- 12. VSTO功能區上下文菜單動態層次
- 13. 如何保留IFrame功能?
- 14. SyntaxError:保留字「功能」
- 15. 功能,僅保留整數
- 16. 功能不保留舊值
- 17. 從Excel工作簿調用Excel加載項功能VSTO
- 18. VSTO Outlook切換狀態
- 19. Excel CustomUI功能區佈局
- 20. Excel功能區上的Webbrowser?
- 21. VSTO Excel功能區選項卡 - 將代碼(.NET)分離爲模塊
- 22. 基於Excel表格更改啓用/禁用功能區按鈕 - VSTO
- 23. Laravel作業和保留狀態或保留隊列
- 24. 延遲Excel保存功能
- 25. 動態更改功能區標籤
- 26. Excel插件。缺少功能區(XMl)
- 27. 獲取的哈希碼Excel工作簿中VSTO基於狀態
- 28. Android View Pager保留視圖狀態
- 29. 在fnDraw()上保留分頁狀態
- 30. Django視圖之間的保留狀態
的討論在這裏https://social.msdn.microsoft.com/Forums/windowsserver/en-US/ a3dade87-1df7-46ec-8876-437194d7553e /如何參考正確的工作簿從一個控制功能區回調?forum = exceldev可能會給你更多關於這個問題的信息。 –
您好,感謝您的鏈接,我發現它已經過去,但根據它沒有喜悅這個問題:)希望能找到一個解決方法這個問題 – Jim
我提出了另一種簡單的解決方案在這裏: HTTP://計算器.COM /問題/ 23418686/EXCEL-2013-VSTO絲帶 - 編輯控件/ 33153525#33153525 – Malick