2009-07-15 59 views
2

我已成功使用Visual Studio 2008中的Excel和Word插件模板來創建添加到功能區的項目,但我在共享插件時遇到了困難。我創建了一個使用xml文件修改和添加到功能區的插件,並且我可以從添加的按鈕中捕獲事件,但是我無法爲我的生活弄清楚如何隱藏按鈕或添加控件啓動並運行。基本上我需要對某個功能區的某種引用,我所能得到的只是對實現IRibbonUi的對象的引用,而這並沒有幫助。有沒有人有任何良好的共享附加示例或建議?VSTO - 用於Word和Excel的共享插件來修改色帶

回答

2

有兩種可能的方法來控制功能區控件的可見性。您可以使用visible屬性或getVisible事件。兩種方法都需要修改您已經使用的xml文件。

如果這是現在你的部分xml文件:

<button id="MyButton" label="Hello" onAction="MyButtonOnAction"/> 

然後你就可以將其更改爲隱藏控制:

<button id="MyButton" label="Hello" onAction="MyButtonOnAction" visible="false"/> 

這是沒有多大用處,因爲它是硬編碼。爲了接近你是XML找零錢什麼:

<button id="MyButton" label="Hello" onAction="MyButtonOnAction" getVisible="MyButtonGetVisible"/> 

然後在你做了你創建MyButtonGetVisible回調恰好有這樣的簽名(C#)的MyButtonOnAction回調以同樣的方式:

bool MyButtonGetVisible(IRibbonControl control) 

使用此方法,您可以根據是否顯示/隱藏按鈕返回true或false。下一個問題可能是MyButtonGetVisible回調函數在我的加載項被加載後才被調用。我想稍後顯示/隱藏按鈕,我如何獲得回調觸發?

要完成此操作,您可以使用該IRibbonUI對象並調用Invalidate函數,這將導致整個功能區失效,從而導致調用回調。如果您需要更好的控制,您可以調用InvalidateControl函數,該函數將ControlID作爲參數,並且只會使一個控件失效,這將導致調用回調。

至於在即時添加控件,我不相信這是可能的。

更多資源,我建議: Part 1 Part 2 Part 3

+0

謝謝,那getVisible回調與InvalidateControl呼叫相結合正是我們落得這樣做。最後唯一的麻煩是,當我們覆蓋打開的文件按鈕時,ctrl-o快捷鍵會以word的形式調用我們的代碼,但不會在Excel中。我們能找到的最好的是,Excel團隊沒有實現這一點。 – Codezy 2009-09-01 14:58:46