共用方式為


HOW TO:在特定的專案類型的巨集中建立事件處理常式

每個巨集專案中的 EnvironmentEvents 範本都會包含一些預先宣告的事件處理常式, 您可以實作這些事件處理常式來回應一些環境事件,例如視窗關閉等。 提供實作之後,每當 Visual Studio 整合式開發環境 (IDE) 中發生指定的事件時,這些一般擴充性事件處理常式就會自動攔截事件。 如需詳細資訊,請參閱 HOW TO:處理巨集中的環境事件

您也可以在 EnvironmentEvents 範本中加入自己的 IDE 事件處理常式。 您只要宣告事件變數、提供事件處理常式程式碼,然後加入 OnMacrosRuntimeResetOnStartupComplete 處理常式,就可以在 Visual Studio IDE 中自動攔截事件。

這個範例會加入 ReferencesEvents 事件處理常式,當 Visual C# 或  Visual Basic 專案中加入參考時便會引發該事件處理常式。

注意事項注意事項

根據您目前使用的設定或版本,您所看到的對話方塊與功能表指令可能會與 [說明] 中描述的不同。 使用 [一般開發設定] 開發了這些程序。 若要變更設定,請從 [工具] 功能表中選取 [匯入和匯出設定]。 如需詳細資訊,請參閱 使用設定

若要將 VSLangProj 事件處理常式加入至巨集

  1. 在 [巨集 IDE] 中的 [專案] 功能表上,按一下 [加入參考]。

  2. 在 [加入參考] 對話方塊中選取 [VSLangProj],按一下 [加入],然後再按 [確定]。

  3. 在 [巨集 IDE] 的 [類別檢視] 總管窗格中,展開 [MyMacros] 並按兩下 [EnvironmentEvents],將它顯示在巨集編輯器窗格中。

  4. 在 [EnvironmentEvents] 模組的最上方,加入下列程式碼:

    Imports VSLangProj
    
  5. 在標記為「自動產生的程式碼,不修改」之 [EnvironmentEvents] 模組的隱藏區域後面,輸入事件的宣告:

    <System.ContextStaticAttribute()> Public WithEvents refEvents As VSLangProj.ReferencesEvents
    

    這個宣告會將 ReferencesEvents 及其方法加入至 [巨集 IDE] 程式碼編輯器的 [類別名稱] 和 [方法名稱] 下拉式方塊 (Drop-Down Box) 中。

  6. 使用 [類別名稱] DTEEvents,再使用 [方法名稱] 下拉式方塊選取 OnMacrosRuntimeResetOnStartupComplete

    這時便會建立這兩個事件的事件處理常式。 必須要有這些事件處理常式,ReferencesEvents 處理常式才能在每次 Visual Studio IDE 中發生事件時自動加以攔截。

  7. 依照下列程式碼所示加入 EnvironmentEvents.refEvents 轉換,修改事件處理常式。 若要在 Visual Basic 專案中加入參考時攔截事件,請以 VBReferencesEvents 取代 CSharpReferencesEvents 字串。

    Public Sub DTEEvents_OnMacrosRuntimeReset() Handles_
     DTEEvents.OnMacrosRuntimeReset
            EnvironmentEvents.refEvents_
            =CType(DTE.Events.GetObject("CSharpReferencesEvents")_
            , ReferencesEvents)
    End Sub
    

    Private Sub DTEEvents_OnStartupComplete() Handles_
     DTEEvents.OnStartupComplete
            EnvironmentEvents.refEvents_
            = CType(DTE.Events.GetObject("CSharpReferencesEvents")_
            , ReferencesEvents)
    End Sub
    
  8. 最後,請將下列程式碼貼入 EnvironmentEvents 模組中,或是從 [類別名稱] 下拉式方塊中選取 [refEvents] 並從 [方法名稱] 下拉式方塊中選取 [ReferenceAdded],建立事件處理常式。 依照下列程式碼所示,將 MsgBox(pReference.Name & " was added to the project.") 這一行程式碼加入至事件處理常式中。

    Public Sub refEvents_ReferenceAdded(ByVal pReference As VSLangProj.Reference) Handles refEvents.ReferenceAdded
            MsgBox(pReference.Name & " was added to the project.")
    End Sub
    
  9. 若要測試事件處理常式,請建立新的 Visual C# 專案 (任何類型都可以)。

    每個自動加入至專案範本的參考都會顯示訊息方塊。

範例

這個程式碼會顯示完整的範例。 您可以將下列程式碼貼入巨集專案的 EnvironmentEvents 模組中。

注意事項注意事項

加入這個事件處理常式之後,每次將參考加入至指定的專案類型時,便會引發此事件處理常式。 如果您不希望每次加入參考時都收到通知,請將這個程式碼標記為註解。

<System.ContextStaticAttribute()> Public WithEvents refEvents As VSLangProj.ReferencesEvents
Public Sub DTEEvents_OnMacrosRuntimeReset() Handles_
 DTEEvents.OnMacrosRuntimeReset
        EnvironmentEvents.refEvents= _
        CType(DTE.Events.GetObject("CSharpReferencesEvents")_
        , VSLangProj.ReferencesEvents)
End Sub
Private Sub DTEEvents_OnStartupComplete() Handles_
 DTEEvents.OnStartupComplete
        EnvironmentEvents.refEvents = _
        CType(DTE.Events.GetObject("CSharpReferencesEvents")_
        , VSLangProj.ReferencesEvents)
End Sub
Public Sub refEvents_ReferenceAdded(ByVal pReference As VSLangProj.Reference) Handles refEvents.ReferenceAdded
        MsgBox(pReference.Name & " was added to the project.")
End Sub

請參閱

工作

HOW TO:處理巨集中的事件

HOW TO:處理 Automation 事件 (Visual Basic)

HOW TO:處理 Automation 事件 (Visual C#)

其他資源

回應事件 (Visual Basic 和 Visual C# 專案)

回應 Automation 事件