Практическое руководство. Обработка событий в макросе
Обновлен: Ноябрь 2007
В интегрированной среде разработки (IDE) существует два типа событий: события, применимые ко всем проектам и применимые только к определенным типам проектов. К событиям, применимым ко всем типам проектов, относятся добавление нового файла, выделение параметра меню и закрытие окна. К событиям, применимым к определенным типам проектов, относятся добавление ссылки или веб-ссылки на проект.
Приведенные далее задачи предполагают наличие у пользователя навыков доступа к среде разработки макросов и создания проекта макроса. Дополнительные сведения см. в разделе Автоматизация повторяющихся действий с помощью макросов.
В этом примере демонстрируется реагирование на события окон, применимые ко всем проектам Visual Studio. Дополнительные сведения о событиях, применимых ко всем языкам, см. в разделе Реакция на события автоматизации.
![]() |
---|
Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих параметров или выпуска среды. Эти процедуры были разработаны с обычными параметрами разработки. Чтобы изменить параметры выберите команду Импорт и экспорт параметров в меню Сервис. Дополнительные сведения см. в разделе Параметры Visual Studio. |
Чтобы перехватить событие, не зависящее от языка
Создайте в окне Мои макросы новый модуль макроса с именем CaptureEvents.
При создании макроса по умолчанию добавляется модуль EnvironmentEvents. Этот модуль определяет объекты событий, описанные в таблице в разделе Реакция на события автоматизации. В модуле EnvironmentEvents переменная WindowEvents уровня модуля уже объявлена, как показано ниже.
Public WithEvents windowEvents As EnvDTE.WindowEvents
В модуле EnvironmentEvents используйте раскрывающиеся окна Имя класса и Имя метода в редакторе макросов интегрированной среды разработки для создания процедуры обработки событий WindowClosing, или вставьте приведенный ниже код.
Public Sub windowEvents_WindowClosing( _ ByVal Window As EnvDTE.Window) Handles windowEvents.WindowClosing MsgBox("You are closing the window.") End Sub
Вернитесь в среду разработки и закройте активное окно.
Появится окно сообщения. Это сообщение отображается при каждом закрытии активного окна. Удалите обработчик событий, если не нужно получать сообщение при каждом закрытии активного окна.
Добавление ссылки в проект
В этом примере демонстрируется реагирование на добавление ссылки в проект. Зависящие от языка события содержатся в свойстве Events. В нем показана реализация, сходная с ReferencesEvents. Можно также предоставить обработчик событий глобального уровня, определив обработчик в модуле EnvironmentEvents. Дополнительные сведения см. в разделе Практическое руководство. Создание обработчика событий в макросе для определенного типа проекта. Чтобы запустить этот пример, проект Visual Basic, Visual J# или Visual C# следует открыть в интегрированной среде разработки Visual Studio.
Чтобы перехватить событие Visual Basic, Visual J# или Visual C#
Создайте новый модуль макроса с именем CaptureRefEvents.
Добавьте ссылку на VSLangProj, выбрав пункт Добавить ссылку… в меню Проект в интегрированной среде разработки макросов. В диалоговом окне Добавление ссылку выберите VSLangProj, нажмите ОК, а затем MyFirstVisualizer.
В модуле EnvironmentEvents разверните свернутый раздел Создать код автоматически, не изменять и добавьте переменную уровня модуля ReferencesEvents.
Dim WithEvents refEvents As VSLangProj.ReferencesEvents
Воспользуйтесь раскрывающимися окнами редактора Имя класса и Имя метода для создания программ из библиотеки DLL для обработки событий для переменной.
Public Sub refEvents_ReferenceAdded(ByVal pReference As _ VSLangProj.Reference) Handles refEvents.ReferenceAdded MsgBox(pReference.Name & " was added to the project.") End Sub
Правой кнопкой мыши щелкните модуль CaptureRefEvents в Обозревателе макросов. В раскрывающемся меню выберите Новый макрос. Для инициализации переменной refEvents, вырежьте и вставьте приведенный ниже код.
Public Sub ConnectRefEvents() Dim proj As VSLangProj.VSProject proj = CType(DTE.Solution.Projects.Item(1).Object, _ VSLangProj.VSProject) refEvents = proj.Events.ReferencesEvents End Sub
Сохраните макрос ConnectRefEvents.
Откройте проект Visual Basic, Visual C# или Visual J# в интегрированной среде разработки Visual Studio.
Запустите макрос ConnectRefEvents.
Добавьте ссылку на проект в интегрированной среде разработки Visual Studio.
Откроется окно с сообщением: "<Имя ссылки> была добавлена в проект".