Sdílet prostřednictvím


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

Další zdroje

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

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

Referenční dokumentace automatizace a rozšíření