Postupy: Manipulace se zobrazeními stromu pomocí UIHierarchy
Doplňky Visual Studio jsou ve verzi aplikace Visual Studio 2013 zastaralé.Měli byste upgradovat doplňky na rozšíření VSPackage.Další informace o upgradu viz Nejčastější dotazy: Převádění doplňků na rozšíření VSPackage.
Některá okna nástrojů v aplikaci Visual Studio, jako Průzkumník řešení, nemají explicitní objekty automatizace, které lze použít k manipulaci s jejich obsahem.Tato okna nástroje však mají stromové zobrazení, tj. hierarchické, přehledové zobrazení uzlů, ke kterému můžete programově přistupovat.Objekt UIHierarchy představuje stromová zobrazení v těchto oknech nástrojů a umožňuje iterovat přes ně a zobrazit obsah jejich uzlů.
Název objektu |
Description |
---|---|
Objekt jazyka UIHierarchy |
Představuje stromové zobrazení v okně zadaného nástroje. |
Kolekce UIHierarchyItems |
Představuje všechny uzly ve stromovém zobrazení. |
Objekt jazyka UIHierarchyItem |
Představuje jeden uzel ve stromovém zobrazení. |
Pomocí těchto objektů a kolekcí můžete:
Vyberte (jednotlivě nebo vícenásobně) a zobrazte uzly ve stromovém zobrazení.
Přesuňte bod vložená ve stromovém zobrazení nahoru nebo dolů.
Vraťte hodnotu vybrané položky nebo ji nechte provést její výchozí akci.
Objekt ToolWindows (který je také vrácen z ToolWindows) umožňuje jednodušší odkazování na různá okna nástrojů v aplikaci Visual Studio.Například místo použití _applicationObject.Windows.Item(EnvDTE.Constants.vsWindowKindOutput) můžete nyní použít _applicationObject.ToolWindows.OutputWindow.
[!POZNÁMKA]
Dialogová okna a příkazy nabídek, které vidíte, se mohou lišit od těch popsaných v nápovědě v závislosti na aktivních nastaveních nebo edici.Tyto postupy byly vyvinuty s aktivním Obecným vývojovým nastavením.Chcete-li změnit nastavení, zvolte NastaveníImportu a Exportu v nabídce Nástroje.Další informace naleznete v tématu Přizpůsobení nastavení pro vývoj v sadě Visual Studio.
Příklad
I když objekt UIHierarchy představuje obsah téměř každého okna nástroje, který má stromové zobrazení, např. Průzkumník řešení, okno nástroje samotného je stále objekt Window.Vlastnost UIHierarchyItems vrací kolekci uzlů nejvyšší úrovně v okně určeného nástroje.V Průzkumníku řešení existuje pouze jeden uzel nejvyšší úrovně (řešení).V důsledku toho je uzel projektu pro toto konkrétní okno v kolekci uzlu nejvyšší úrovně, nikoli v okně kolekce UIHierarchyItems.
Berte na vědomí, že existují dva způsoby přístupu ke konkrétnímu uzlu (UIHierarchyItem) ve stromovém zobrazení:
Při použití metody GetItem k přímému odkazování na požadovaný uzel pomocí vzorce řešení/projekt/položka.
Pomocí UIHierarchyItems.Item.UIHierarchyItems... (vzorek kolekce/položka/kolekce).
Chcete-li přejít do hlouběji do uzlu, postupujte prostě nadále podle tohoto vzoru.Například k přechodu k uzlu podřízenému uzlu na nejvyšší úrovni byste použili UIHierarchy.UIHierarchyItems.Item(1).UIHierarchyItems.Item(2).
Příklady, jak použít obě tyto metody pro přístup k nižší úrovni uzlu, jsou uvedeny níže.
Tyto příklady doplňků ukazují, jak odkazovat a používat různé členy modelu automatizace UIHierarchy ke zobrazování seznamu všech položek v Průzkumníku řešení.
První příklad používá strategii metody GetItem strategii přístupu k obsahu uzlu Odkazy v Průzkumníku řešení.Další informace o způsobu spuštění kódu doplňku naleznete v části Postupy: Kompilace a spuštění příkladů kódu objektu automatizace.
[!POZNÁMKA]
Příklad pro Průzkumník řešení odesílá data do okna se zprávou.
Imports System.Text
Public Sub OnConnection(ByVal application As Object, ByVal _
connectMode As ext_ConnectMode, ByVal addInInst As Object, _
ByRef custom As Array) Implements IDTExtensibility2.OnConnection
_applicationObject = CType(application, DTE2)
_addInInstance = CType(addInInst, AddIn)
listSlnExpNodes(_applicationObject)
End Sub
Sub listSlnExpNodes(dte as DTE2)
' Requires reference to System.Text for StringBuilder.
Dim UIH As UIHierarchy = dte.ToolWindows.SolutionExplorer
' Set a reference to the first level nodes in Solution Explorer.
' Automation collections are one-based.
Dim UIHItem As UIHierarchyItem = _
UIH.GetItem("MyAddin1\MyAddin1\References")
Dim file As UIHierarchyItem
Dim sb As New StringBuilder
' Iterate through first level nodes.
For Each file In UIHItem.UIHierarchyItems
sb.AppendLine(file.Name)
' Iterate through second level nodes (if they exist).
Dim subitem As UIHierarchyItem
For Each subitem In file.UIHierarchyItems
sb.AppendLine(" " & subitem.Name)
Next
Next
MsgBox(sb.ToString)
End Sub
using System.Text;
public void OnConnection(object application, ext_ConnectMode _
connectMode, object addInInst, ref Array custom)
{
_applicationObject = (DTE2)application;
_addInInstance = (AddIn)addInInst;
listSlnExpNodes(_applicationObject);
}
public void listSlnExpNodes(DTE2 dte)
{
// Requires reference to System.Text for StringBuilder.
UIHierarchy UIH = dte.ToolWindows.SolutionExplorer;
// Set a reference to the first level nodes in Solution Explorer.
// Automation collections are one-based.
UIHierarchyItem UIHItem =
UIH.GetItem("MyAddin1\\MyAddin1\\References");
StringBuilder sb = new StringBuilder();
// Iterate through first level nodes.
foreach ( UIHierarchyItem file in UIHItem.UIHierarchyItems )
{
sb.AppendLine(file.Name);
// Iterate through second level nodes (if they exist).
foreach ( UIHierarchyItem subitem in file.UIHierarchyItems )
{
sb.AppendLine(" "+subitem.Name);
}
}
MessageBox.Show(sb.ToString());
}
Následující příklad ukazuje, jak použít UIHierarchy k zobrazení obsahu stromového zobrazení okna Průzkumník řešení.
Sub cvTreeView()
Dim uih As UIHierarchy = DTE.ToolWindows.SolutionExplorer
Dim uihItem As UIHierarchyItem
Dim uihItems As UIHierarchyItems = uih.UIHierarchyItems
Dim msg As String
For Each uihItem In uihItems
msg += uihItem.Name & vbCr
Next
MsgBox(msg)
End Sub
Viz také
Úkoly
Postupy: Řízení Průzkumníka řešení
Postupy: Změna charakteristik okna
Koncepty
Graf modelu objektů automatizace