方法 : マクロを使用してイベントを処理する

更新 : 2007 年 11 月

新しいマクロを作成すると、EnvironmentEvents という名前のモジュールが既定で追加されます。このモジュールによって、「オートメーション イベントへの応答」にある表で説明されているイベント オブジェクトの多くがあらかじめ定義されるため、自分で定義する必要はありません。EnvironmentEvents モジュールに含まれていないイベントを処理する場合は、そのイベントを追加できます。この方法の詳細については、「方法 : マクロで環境イベントを処理する」を参照してください。

次の手順では、マクロを使用して、ツール ウィンドウ (この場合は、タスク一覧) に関連付けられたイベントを処理する方法について説明します。

ms165651.alert_note(ja-jp,VS.90).gifメモ :

使用している設定またはエディションによっては、表示されるダイアログ ボックスやメニュー コマンドがヘルプに記載されている内容と異なる場合があります。ここに記載されている手順は、全般的な開発設定が適用されているものとして記述されています。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio の設定」を参照してください。

ツール ウィンドウに関連するイベントを処理するには

  1. マクロ IDE で、EnvironmentEvents モジュールに次のコードを追加します。

  2. マクロを実行します。

    マクロによって [タスク一覧] の項目が追加されたり削除されたりすると、[タスク一覧] のイベントが処理されます。

使用例

次のマクロの例では、Visual Studio オートメーション モデルのイベント オブジェクトを使用して、イベントに応答する方法を示します。この例では、イベント ハンドラのイベントに応答して、[タスク一覧] のタスクを追加して削除します。

' Macro code.
Public Module EnvironmentEvents

   Public Sub TaskListEvents_TaskAdded(ByVal TaskItem As _
   EnvDTE.TaskItem) Handles TaskListEvents.TaskAdded
      MsgBox("A task named '" & TaskItem.Description & "' was added _
      to the Task List.")
      ' Put other code here that you want to execute when this 
      ' event occurs.
   End Sub

   Public Sub TaskListEvents_TaskRemoved(ByVal TaskItem As _
   EnvDTE.TaskItem) Handles TaskListEvents.TaskRemoved
      MsgBox("A task named '" & TaskItem.Description & "' was _
      removed from the Task List.")
      ' Put other code here that you want to execute when this 
      ' event occurs.
   End Sub
End Module

Sub EventsExample()
    ' Add items to and remove items from the Task List.
    Dim TL As TaskList = dte.ToolWindows.TaskList
    Dim TLItem As taskitem

    ' Add a couple of tasks to the Task List.
    TLItem = TL.TaskItems.Add(" ", " ", "Test task 1.", _
    vsTaskPriority.vsTaskPriorityHigh, vsTaskIcon.vsTaskIconUser, _
    True, , 10, , )
    TLItem = TL.TaskItems.Add(" ", " ", "Test task 2.", _
    vsTaskPriority.vsTaskPriorityLow, vsTaskIcon.vsTaskIconComment, _
    , , 20, , )

    ' List the total number of task list items after adding the new 
    ' task items.
    MsgBox("Task Item 1 description: " & _
    TL.TaskItems.Item(2).Description)
    MsgBox("Total number of task items: " & TL.TaskItems.Count)

    ' Remove the second task item. The items list in reverse numeric 
    ' order.
    MsgBox("Deleting the second task item")
    TL.TaskItems.Item(1).Delete()
    MsgBox("Total number of task items: " & TL.TaskItems.Count)
End Sub

アドインのイベントに応答するには、OnConnectionMethod イベントでイベント ハンドラを初期化します。たとえば、次のようにします。

Public Class Class1
   Implements IDTExtensibility2
   Dim objEventsClass As EventsClass

   Public Sub OnConnection(ByVal Application As Object, ByVal _
   ConnectMode As EnvDTE.ext_ConnectMode, ByVal AddInInst As _
   Object, ByRef custom() As Object) Implements _
   EnvDTE.IDTExtensibility2.OnConnection
      objEventsClass = New EventsClass()
      objEventsClass.TaskListEvents = _
      _applicationObj.Events.TaskListEvents
   End Sub
End Class

Public Class EventsClass
   Public WithEvents TaskListEvents As EnvDTE.TaskListEvents

   Private Sub TaskListEvents_TaskAdded(ByVal TaskItem As _
   EnvDTE.TaskItem) Handles TaskListEvents.TaskAdded
      MsgBox("A task named '" & TaskItem.Description & "' was added _
      to the Task List.")
      ' Put any other code here that you want to execute when this 
      ' event occurs.
   End Sub
End Class

参照

その他の技術情報

イベントへの応答 (Visual Basic および Visual C# プロジェクト)