Visual Studio 2008で作業していて、ファイルを開くたびに[編集]>[アウトライン]>[定義に折りたたむ]を実行したいと思います。その後、すべての地域が拡大されればいいのにと思います。KyralessaがTheProblemwith Code Foldingのコメントで提供したコードを試しましたが、これは手動で実行する必要のあるマクロとして非常にうまく機能します。マクロIDEのEnvironmentEventsモジュールに次のコードを配置して、このマクロを拡張してイベントとして機能させようとしました。
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")
また、サブルーチン内で使用してみましたが、うまくいきませんでした。
この質問は、これと同じ最終結果を取得しようとしますが、イベント処理マクロで何が間違っているのかを尋ねています。