私はVisual Studio 2008で作業していますが、ファイルを開くたびに編集>アウトライン>定義に折りたたみを行いたいと思います。その後、すべての地域が拡大されればそれはいいだろう。私は、KyralessaがThe Problem with Code Foldingのコメントで提供したコードを試しました。これは、手動で実行する必要があるマクロとして非常にうまく機能します。私はマクロIDEでEnvironmentEventsモジュールに次のコードを配置することによって、イベントとして動作するように、このマクロを拡大しようとした:EnvironmentEventマクロが完了しません
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")
を使用してみましたが、運がありませんでした。
この質問は、this oneと同じ最終結果を得ようとしますが、私は自分のイベント処理マクロで何が間違っているのかを尋ねています。
うわー、それは動作します! EnvironmentEventsマクロに 'Timer'と' Timeout'の 'Imports System.Threading'行を追加する必要がありましたが、それは動作します! CSファイルを開き、約1秒後にすべての定義が崩壊します。ありがとう! –
私は、新しいソリューションを開いたときに、前回開いたファイルを覚えていて、エラーのためにマクロIDEを終了しなければならないことに気付きました。 –
うん、私もエラーがある。私はこの問題を解決しようとしましたが、解決策を見つけることができず、すでに多くの時間を費やしていました。もし私が何か他のことを考えるなら、私はそれを投稿します。その間、機能を有効/無効にしてキーボードショートカットにバインドするには、ブール値(Solution_Openedイベントでfalseに設定)を使用するだけです。 –