2012-03-30 63 views
0

我工作的一個擴展的Visual Studio 2010,和我試圖找出如何隱藏在Solution Explorer(該UIHierarchy)的一個項目,沒有從底層溶液中移出。我一直在尋找,並發現了一些線索,但我只是不知道把它放在一起。有沒有辦法以編程方式在解決方案資源管理器中隱藏項目?

從我已經能夠收集,Visual Studio甚至不創建UIHierarchy實例,除非該項目是可見的(即樹已擴展到它),所以我想如果我想要一個項目走開,我應該能夠簡單地從樹中移除實例。

我的第一個問題是,是我的假設是正確的?

假設答案是肯定的,那麼我有以下代碼(簡化爲這個職位):

private void HideProject(IVsHierarchy project) 
{ 
    ((IVsUIHierarchyWindow2)_uiHierarchyWindow).RemoveUIHierarchy(GetUIHierarchyFromHierarchy(project)); 
} 

private IVsUIHierarchy GetUIHierarchyFromHierarchy(IVsHierarchy project) 
{ 
    UIHierarchy solutionExplorer = ((DTE2)_dte).ToolWindows.SolutionExplorer; 
    foreach (UIHierarchyItem hierarchy in solutionExplorer.UIHierarchyItems.Item(1).UIHierarchyItems) 
    { 
     // What do I do here? 
    } 
    return null; 
} 

顯然,這並不做任何事情,因爲我完全被卡住。我懷疑代碼將不得不遞歸(處理包含在文件夾中的項目等),但現在,我只關心所有項目都直接包含在解決方案下的簡單情況。

有誰知道比微軟的(恕我直言缺乏)文檔的任何更好的參考材料?有沒有人試過這樣做?我該怎麼做呢?

謝謝!

+1

爲更好的文檔 - 我猜你會發現在MSDN論壇VSX一些有益的信息。你也可以尋找基於開源MPF的軟件包(有一些產品可用),並瞭解他們是如何做到的; – 2012-03-31 11:12:10

回答

1

我不知道這是可能的項目節點。至於文件節點,有一個VSHPROPID_IsNonMemberItem層次結構屬性。還請看this threadthis one

+0

Dang,它開始看起來我不能做我想做的事情。設置項目上文件節點的標誌會引發各種錯誤。無論如何,感謝您的幫助! – 2012-04-02 14:56:06

相關問題