Если вашему макросу или надстройке нужно получить уведомление об определенном событии, то для этого во всех ранее обсуждавшихся категориях объектов расширяемости поддерживаются различные объекты событий. Имеются события для окон, редакторов, проектов и т. д. Для каждого события (поддерживаемого интегрированной средой) соответствующий класс модели расширяемости позволяет вам перехватить событие (и выполнить нужное действие в случае его возникновения). Объектное дерево событий имеет корень в свойстве DTE.Events (рис. 11.10).
Поскольку события обрабатываются по-разному (в зависимости от того; работаете ли вы с кодом настройки или кодом макроса), то описание подробностей обработки событий мы отложим до следующей главы. Однако основная идея очень проста: вы получаете ссылку на объект интересующего вас события, а потом пишете обработчик события, который реагирует на одно из опубликованных событий объекта.
Например, следующий код мог бы быть обработчиком события "build complete" внутри надстройки на языке Visual Basic:
Dim WithEvents bidevents As BuildEvents bldevents = DTE.Events.BuildEvents
После создания объекта BuildEvents вам нужно написать реальный обработчик события:
Private Sub bldevents_OnBuildDone(ByVal Scope As EnvDTE.vsBuildScope, _
ByVal Action As EnvDTE.vsBuildAction) Handles bldevents.OnBuildDone " Здесь должен быть код обработки события End Sub