HOW TO:處理巨集中的環境事件
更新:2007 年 11 月
每個新巨集專案都包括稱為 [EnvironmentEvents] 的模組,在 [巨集 IDE] 內才能看到此模組。這是一個樣板項目,其中包含許多預先定義的有用事件程序,可讓您在巨集中實作,尤其是:
您可以在 [類別名稱] 下拉式方塊中檢視這些事件程序,在 [方法名稱] 下拉式方塊中檢視其事件。這兩個方塊都位於程式碼編輯器的上方。
若要將預先定義的事件程序插入巨集中
在 [巨集 IDE] 中的 [類別檢視] 總管窗格上,按兩下 [EnvironmentEvents] 節點以顯示 [EnvironmentEvents] 索引標籤和巨集編輯器窗格中的下拉式功能表。
從 [EnvironmentEvents] 下拉式功能表選擇事件型別,例如 [TaskListEvents]。[宣告] 下拉式方塊現在已經填入可用的 [工作清單] 事件。
在 [宣告] 下拉式功表中選擇事件,例如 [TaskAdded],將其事件程序加入模組。
此事件將插入巨集中,現在可以將程式碼加入事件程序中。
在某些狀況下,可能要加入更多事件程序至 [類別名稱] 下拉式方塊中,例如 CommandEvents 事件。
加入新事件程序
若要將新事件程序加入類別名稱下拉式方塊中
在標記 "Automatically generated code, do not modify" 的 EnvironmentEvents 模組的隱藏區域後輸入事件宣告:
<System.ContextStaticAttribute()> Public WithEvents CommandEvents As EnvDTE.CommandEvents ' This procedure handles DTEEvents.OnMacrosRuntimeReset.
設定 OnMacrosRuntimeReset 程序,使得每次重新執行巨集時都初始化新的事件變數:
Public Sub DTEEvents_OnMacrosRuntimeReset() Handles _ DTEEvents.OnMacrosRuntimeReset CommandEvents = DTE.Events.CommandEvents End Sub
設定 OnStartupComplete 程序以完成步驟 5 中的初始化程序。
Private Sub DTEEvents_OnStartupComplete() Handles_ DTEEvents.OnStartupComplete CommandEvents = DTE.Events.CommandEvents End Sub
加入程式碼以回應此事件。在此範例中,執行命令之後,此程序會報告發出之命令的詳細資料:
Public Sub CommandEvents_AfterExecute(ByVal Guid As String, ByVal ID As Integer, ByVal CustomIn As Object, ByVal CustomOut as Object) Handles CommandEvents.AfterExecute MsgBox(DTE.Commands.Item(Guid, ID).Name) End Sub
在宣告新事件時,必須先將它初始化,才能使用該事件。對於巨集,初始化新事件變數的位置在 OnMacrosRuntimeReset 事件程序中。
這一事件發生於每當重設巨集的執行階段時,例如載入或卸載巨集時。在發生此事件時,會失去其全域狀態。也就是說,會失去全域變數的值,而且事件處理常式會脫鉤,這表示發生事件時原本正常執行的程式碼將不再執行。
在重設巨集的執行階段時,會發生 OnMacrosRuntimeReset 事件。這可讓您在發生重設巨集執行階段時,自動重新初始化變數和事件處理常式。藉由初始化 OnMacrosRuntimeReset 中的事件變數和處理常式,可確定每次重設巨集的執行階段時都會重新初始化其值,因此新的事件程序得以正確運作。
請參閱
工作
HOW TO:在巨集中參考 COM 和 .NET Framework 元件