2016-11-17 59 views

回答

0

當然有訂單。
但是這是Office的內部實現細節,你絕對不應該依賴這個。

您唯一可以信賴的訂單是onLoad,這是保證先到的。

這些方法的其餘部分不應該互相依賴。它們應該儘可能無狀態地執行,並且只應該返回所要求的值。 (因此他們的名字以get...開頭。)
也就是說,你得到控件的id並且必須返回一些值 - 也許從當前的Excel.Application中獲得一些信息。

一個額外的信息:
如果您需要所有這些get...方法的更新,你可以調用IRibbonUI.Invalidate()
(你得到的IRibbonUI的實例作爲onLoad調用的參數。)

+0

我一直在使用無效的一個或我的自定義功能區中的一堆我的控制措施,並已經注意到了各種的調用順序'get *'方法總是相同的,在單個控件和其中的一組控件中,但是例如我期望爲每個控件首先調用getVisible方法,因爲如果控件不可見,則其他方法是合理的可能不會被調用。但是這不會讓我感到困惑。 – noplace

+0

@noplace你所經歷的呼叫順序保持不變並不奇怪。但它可能會偏離Office的不同版本或版本,並可隨時更改,恕不另行通知。我現在正在開發使用COM,自定義色帶和VSTO的Excel加載項,尤其是對於Office 2016來說,即使定期自動更新改變了內部行爲和調用順序,機會也非常高。奇怪的'COMExceptions'和'AccessViolations'在我的情況下是後果。請問:爲什麼您甚至需要特殊的電話訂單? – haindl

+0

在我最近開發的一個插件中,不幸的是,當不再調用單用戶控件失效時,我不得不保持一個狀態和'onLoad'方法。如果使整個功能區失效,是否再次調用「onLoad」? @haindl你會建議我一本關於VSTO主題的好書嗎(我知道微軟正在推送網絡插件,但它們仍然有限)......我知道我發表的那篇文章是最新的,我不確定它是否也有效。 – noplace