Jak: manipulovat pomocí UIHierarchy zobrazení stromu
Některé nástroje systému windows v Visual Studio, jako je například Průzkumníku, nemají explicitní automatizační objekty, které můžete použít k manipulaci s jejich obsah.Tyto nástroje systému windows, ale mít strom – to znamená hierarchické, stylu osnovy, zobrazení uzlu –, ke kterému lze přistupovat programově.UIHierarchy Objekt představuje zobrazení stromu v těchto oknech nástroje a umožňuje iterovat přes ně a zobrazovat obsah jejich uzlů.
Název objektu |
Description |
---|---|
UIHierarchyobjekt |
Představuje stromové zobrazení v okně určený nástroj. |
UIHierarchyItemskolekce |
Představuje všechny uzly ve stromovém zobrazení. |
UIHierarchyItemobjekt |
Představuje jeden uzel ve stromovém zobrazení. |
Pomocí těchto objektů a kolekcí můžete provádět následující akce:
Vyberte (jednotlivě nebo násobit) a zobrazit uzly ve stromovém zobrazení.
Přesuňte ukazatel myši nahoru nebo dolů ve stromovém zobrazení.
Vrací hodnotu vybrané položky nebo dá provést jeho výchozí akci.
ToolWindows Objektu (který je také vrácena z ToolWindows) umožňuje jednodušší odkazování na různé nástroje windows v 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 v nabídkách menu, které vidíte, se mohou lišit od těch popsaných v nápovědě, v závislosti na vašich aktivních nastaveních nebo edici.Tyto postupy byly vyvinuty pomocí obecnému vývojovému nastavení aktivní.Chcete-li změnit vaše nastavení, zvolte Import a ExportNastavení na Nástroje nabídky. Další informace naleznete v tématu Nastavení aplikace Visual Studio.
Příklad
Ačkoli UIHierarchy objekt představuje obsah téměř jakýkoli nástroj okno, které obsahuje stromové zobrazení, jako je například Průzkumníku, okno nástroje, sám je stále Window objektu.UIHierarchyItems Vlastnost vrací kolekci nejvyšší úrovně uzlů v okně určený nástroj.V Průzkumníku, existuje pouze jeden uzel nejvyšší úrovně (roztok).V důsledku toho je na uzel projektu pro tento konkrétní okno v kolekci uzel nejvyšší úrovně, nikoli v okně UIHierarchyItems kolekce.
Majíc tím, existují dva způsoby přístupu konkrétním uzlu (UIHierarchyItem) ve stromovém zobrazení:
Při použití GetItem metoda přímého odkazu požadovaného uzlu pomocí vzoru řešení, projektu/položky.
Pomocí UIHierarchyItems.Item.UIHierarchyItems... (vzor kolekce / / kolekce položek).
Procházet hlouběji do uzlu vnoření, právě nadále používat tento vzor.Například přejdete do uzlu, který je podřízený uzel na nejvyšší úrovni, použili byste UIHierarchy.UIHierarchyItems.Item(1).UIHierarchyItems.Item(2).
Příklady, jak použít obě tyto metody pro přístup k uzlu nižší úrovně se prokáže, že v následujících příkladech.
Tyto doplněk příklady ukazují, jak odkazovat a využívat různé členy UIHierarchy model automatizace, chcete-li vypsat všechny položky v Průzkumníku.
První příklad používá GetItem strategie metoda přístupu k obsahu na odkazy v Průzkumníku.Další informace o tom, jak spustit kód add-in, viz Jak: kompilace a spuštění příkladů kódu automatizace objektu modelu.
[!POZNÁMKA]
Příklad pro Průzkumníku odešle 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žívat UIHierarchy Chcete-li zobrazit obsah v zobrazení stromu Průzkumníku okna.
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
Jak: Explorer ovládací prvek řešení
Koncepty
Automatizační objekt modelu grafu