Я работаю в Visual Studio 2008 и хотел бы, чтобы меню «Правка»> «Контуры»> «Свернуть до определений» запускалось при каждом открытии файла. Было бы хорошо, если бы после этого все регионы были расширены. Я попробовал код, который Kyralessa предложил в комментарии к Проблема со складыванием кода , и он очень хорошо работает как макрос, который мне нужно запустить вручную. Я попытался расширить этот макрос, чтобы он действовал как событие, поместив следующий код в модуль EnvironmentEvents в IDE макроса:
Public Sub documentEvents_DocumentOpened(ByVal Document As EnvDTE.Document) Handles DocumentEvents.DocumentOpened
Document.DTE.ExecuteCommand("Edit.CollapsetoDefinitions")
DTE.SuppressUI = True
Dim objSelection As TextSelection = DTE.ActiveDocument.Selection
objSelection.StartOfDocument()
Do While objSelection.FindText("#region", vsFindOptions.vsFindOptionsMatchInHiddenText)
Loop
objSelection.StartOfDocument()
DTE.SuppressUI = False
End Sub
Однако, похоже, это ничего не делает, когда я открываю файл из моего решения в VS. Чтобы проверить, что макрос запускается, я поместил в эту подпрограмму оператор MsgBox()
и заметил, что код до Document.DTE.ExecuteCommand("Edit.CollapsetoDefinitions")
работал нормально, но после этой строки ничего не получалось. Когда я отлаживал и устанавливал точку останова в подпрограмме, я нажимал F10, чтобы перейти к следующей строке, и элемент управления выходил из подпрограммы, как только запускалась строка ExecuteCommand
. Несмотря на это, эта линия, кажется, ничего не делает, то есть она не разрушает очертания.
Я также пытался использовать только DTE.ExecuteCommand("Edit.CollapsetoDefinitions")
в подпрограмме, но безуспешно.
Этот вопрос пытается получить тот же конечный результат, что и этот , но я спрашиваю о том, что я могу делать неправильно в моем макросе обработки событий.