Поделиться через


Практическое руководство. Создание обработчика событий в макросе для определенного типа проекта

Обновлен: Ноябрь 2007

Шаблон EnvironmentEvents, включенный во все проекты макросов, содержит ряд заранее объявленных обработчиков событий. Эти обработчики событий можно реализовать для реагирования на различные события среды, такие как закрытие окна и пр. После реализации эти обработчики событий автоматически перехватывают события, возникающие в интегрированной среде разработки Visual Studio. Дополнительные сведения см. в разделе Практическое руководство. Обработка событий среды в макросах.

Можно добавить собственные обработчики событий интегрированной среды разработки в шаблон EnvironmentEvents. Для автоматизации перехвата событий в интегрированной среде разработки Visual Studio следует объявить переменную события, предоставить для нее код обработчика событий и добавить обработчики OnMacrosRuntimeReset и OnStartupComplete.

В этом примере добавляется обработчик событий ReferencesEvents, срабатывающий при добавлении ссылки в проект Visual C#, Visual Basic или Visual J#.

ms228948.alert_note(ru-ru,VS.90).gifПримечание.

Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих параметров или выпуска среды. Эти процедуры были разработаны с обычными параметрами разработки. Чтобы изменить параметры, в меню Сервисвыберите команду Импорт и экспорт параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.

Чтобы добавить обработчик событий VSLangProj в макрос

  1. В интегрированной среде разработки макросов в меню Проект выберите пункт Добавить ссылку.

  2. В диалоговом окне Добавление ссылки выберите VSLangProj, нажмите Добавить, а затем ОК.

  3. В области проводника Представление классов интегрированной среды разработки макросов разверните "Мои макросы" и дважды щелкните EnvironmentEvents для отображения его в редакторе макросов.

  4. В начале модуля EnvironmentEvents добавьте:

    Imports VSLangProj
    
  5. Введите объявление события после скрытой области в модуле EnvironmentEvents, помеченной как "Automatically generated code, do not modify":

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

    Это объявление добавляет событие ReferencesEvents и его методы в списки Имя класса и Имя метода в редакторе интегрированной среды разработки макросов.

  6. Используйте список Имя класса для выбора DTEEvents, а список Имя метода для выбора OnMacrosRuntimeReset и OnStartupComplete.

    При этом для данных двух событий создаются обработчики. Эти обработчики событий необходимы для обработчика ReferencesEvents, чтобы автоматически перехватывать события при каждом их возникновении в интегрированной среде разработки Visual Studio.

  7. Измените обработчики событий, добавив приведение 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
    
  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 проекта макроса.

ms228948.alert_note(ru-ru,VS.90).gifПримечание.

После добавления этого обработчика событий он будет запускаться каждый раз при добавлении ссылки в проект определенного типа. Закомментируйте этот код, если не нужно получать сообщение при каждом добавлении ссылок.

<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#)

Другие ресурсы

Отклик на события (проекты Visual Basic и Visual C#)

Реакция на события автоматизации