×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ソリューション内のプロジェクトとかフォルダーが
何階層にもなっていると、幾重にも展開されたプロジェクトやらフォルダーやら、
あーもうー的に縦広がり横広がりに耐えかね耐えかねました。
折りたたむマクロを作ろうと作ってみたのですが、
プロジェクトは折りたためれども、
フォルダー以下を折りたたむのがわからず。
調べたところまさにドン・ピシャリなのを作っている人が
いらっしゃいました。
何階層にもなっていると、幾重にも展開されたプロジェクトやらフォルダーやら、
あーもうー的に縦広がり横広がりに耐えかね耐えかねました。
折りたたむマクロを作ろうと作ってみたのですが、
プロジェクトは折りたためれども、
フォルダー以下を折りたたむのがわからず。
調べたところまさにドン・ピシャリなのを作っている人が
いらっしゃいました。
「Useful Visual Studio Macros」
http://tomfaust.blogspot.com/2008/05/useful-vs2008-macros.html
自分なりに解釈したコメントをつけたのが以下。
- マクロ
パタパタと全部ひっくるめて折りたたんでくださるマクロで
便利なことこの上なしです。
ただしすでにたたまれているノード以下は
折りたたまれない仕様となっているようです。
http://tomfaust.blogspot.com/2008/05/useful-vs2008-macros.html
自分なりに解釈したコメントをつけたのが以下。
- マクロ
' ソリューションTree内のプロジェクトをすべて折りたたむ Sub CollapseAllProject() ' ソリューションエクスプローラーオブジェクトを取得 Dim solutionExplorer As UIHierarchy = DTE.Windows.Item(Constants.vsext_wk_SProjectWindow).Object() ' ソリューション以下の階層アイテムがなければスルー If (solutionExplorer.UIHierarchyItems.Count = 0) Then Return End If ' ルートノードを取得。操作中断。 Dim rootNode As UIHierarchyItem = solutionExplorer.UIHierarchyItems.Item(1) rootNode.DTE.SuppressUI = True ' すべてのプロジェクトをたたむ。再帰。 CollapseProject(rootNode, solutionExplorer) ' ルートノードを選択。 ' ドキュメント選択時にソリューションTreeを同期する設定に。 rootNode.Select(vsUISelectionType.vsUISelectionTypeSelect) ' 操作再開。 rootNode.DTE.SuppressUI = False End Sub ' ノード内にあるプロジェクトを折りたたむ Private Sub CollapseProject(ByVal item As UIHierarchyItem, ByRef solutionExplorer As UIHierarchy) ' 対象ノードの子ノードを対象。 For Each innerItem As UIHierarchyItem In item.UIHierarchyItems If innerItem.UIHierarchyItems.Count > 0 Then ' 下の子がいれば再帰 CollapseProject(innerItem, solutionExplorer) ' 折りたたむ If innerItem.UIHierarchyItems.Expanded Then innerItem.UIHierarchyItems.Expanded = False If innerItem.UIHierarchyItems.Expanded = True Then ' VisualStudio2005のバグ用 innerItem.Select(vsUISelectionType.vsUISelectionTypeSelect) solutionExplorer.DoDefaultAction() End If End If End If Next End Sub
パタパタと全部ひっくるめて折りたたんでくださるマクロで
便利なことこの上なしです。
ただしすでにたたまれているノード以下は
折りたたまれない仕様となっているようです。
PR
この記事にコメントする