Sdílet prostřednictvím


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í

Jak: změnit vlastnosti okna

Koncepty

Automatizační objekt modelu grafu

Další zdroje

Vytváření a řízení prostředí Windows

Vytváření doplňků a průvodců

Automatizace a Reference rozšiřitelnosti