Практическое руководство. Создание обработчика событий в макросе для определенного типа проекта
Обновлен: Ноябрь 2007
Шаблон EnvironmentEvents, включенный во все проекты макросов, содержит ряд заранее объявленных обработчиков событий. Эти обработчики событий можно реализовать для реагирования на различные события среды, такие как закрытие окна и пр. После реализации эти обработчики событий автоматически перехватывают события, возникающие в интегрированной среде разработки Visual Studio. Дополнительные сведения см. в разделе Практическое руководство. Обработка событий среды в макросах.
Можно добавить собственные обработчики событий интегрированной среды разработки в шаблон EnvironmentEvents. Для автоматизации перехвата событий в интегрированной среде разработки Visual Studio следует объявить переменную события, предоставить для нее код обработчика событий и добавить обработчики OnMacrosRuntimeReset и OnStartupComplete.
В этом примере добавляется обработчик событий ReferencesEvents, срабатывающий при добавлении ссылки в проект Visual C#, Visual Basic или Visual J#.
Примечание. |
---|
Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих параметров или выпуска среды. Эти процедуры были разработаны с обычными параметрами разработки. Чтобы изменить параметры, в меню Сервисвыберите команду Импорт и экспорт параметров. Дополнительные сведения см. в разделе Параметры Visual Studio. |
Чтобы добавить обработчик событий VSLangProj в макрос
В интегрированной среде разработки макросов в меню Проект выберите пункт Добавить ссылку.
В диалоговом окне Добавление ссылки выберите VSLangProj, нажмите Добавить, а затем ОК.
В области проводника Представление классов интегрированной среды разработки макросов разверните "Мои макросы" и дважды щелкните EnvironmentEvents для отображения его в редакторе макросов.
В начале модуля EnvironmentEvents добавьте:
Imports VSLangProj
Введите объявление события после скрытой области в модуле EnvironmentEvents, помеченной как "Automatically generated code, do not modify":
<System.ContextStaticAttribute()> Public WithEvents refEvents As VSLangProj.ReferencesEvents
Это объявление добавляет событие ReferencesEvents и его методы в списки Имя класса и Имя метода в редакторе интегрированной среды разработки макросов.
Используйте список Имя класса для выбора DTEEvents, а список Имя метода для выбора OnMacrosRuntimeReset и OnStartupComplete.
При этом для данных двух событий создаются обработчики. Эти обработчики событий необходимы для обработчика ReferencesEvents, чтобы автоматически перехватывать события при каждом их возникновении в интегрированной среде разработки Visual Studio.
Измените обработчики событий, добавив приведение EnvironmentEvents.refEvents, как показано ниже. Для перехвата события при добавлении ссылки в проект Visual Basic или Visual J#, замените строку CSharpReferencesEvents строкой VBReferencesEvents или VJSharpReferencesEvents соответственно.
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
Вставьте следующий код в модуль 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
Для тестирования обработчика событий создайте любой проект 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
См. также
Задачи
Практическое руководство. Обработка событий в макросе
Практическое руководство. Обработка событий автоматизации (Visual Basic)
Практическое руководство. Обработка событий автоматизации (Visual C#)