Udostępnij za pośrednictwem


Jak: manipulować widoki drzewa przy użyciu UIHierarchy

Niektóre narzędzia systemu windows, w Visual Studio, takich jak Solution Explorer, nie mają obiektu automatyzacji jawnych, które służą do manipulowania ich zawartość.Te narzędzie systemu windows jednak mieć widok drzewa — to znaczy hierarchicznych, konspektu stylu, widok węzła — programowo dostępny.UIHierarchy Obiekt reprezentuje widoku drzewa w tych oknach narzędzi i umożliwia iteracyjne przeglądanie je i przeglądać zawartość ich węzłów.

Nazwa obiektu

Opis

UIHierarchyobiekt

Reprezentuje widoku drzewa w oknie określonego narzędzia.

UIHierarchyItemsKolekcja

Reprezentuje wszystkich węzłów w widoku drzewa.

UIHierarchyItemobiekt

Reprezentuje pojedynczy węzeł w widoku drzewa.

Za pomocą tych obiektów i kolekcji, możesz:

  • Wybierz (pojedynczo lub mnożenie) i wyświetlanie węzłów w widoku drzewa.

  • Przeniesienie punktu wstawiania w górę lub w dół, w widoku drzewa.

  • Zwraca wartość zaznaczonego elementu lub zostało ono wykona swoje działanie domyślne.

ToolWindows Obiektu (która jest również zwracana z ToolWindows) pozwala łatwiej odwoływania się do wielu okien narzędzie w Visual Studio.Na przykład, zamiast _applicationObject.Windows.Item(EnvDTE.Constants.vsWindowKindOutput), program _applicationObject.ToolWindows.OutputWindow.

[!UWAGA]

Okna dialogowe i polecenia menu, które widzisz mogą różnić się od tych opisanych w pomocy w zależności od tego, aktywne ustawienia lub edition.Procedury te zostały opracowane active ogólnych ustawień projektowych.Aby zmienić ustawienia, wybierz polecenie importu i wyeksportowaćUstawienia na Narzędzia menu. Aby uzyskać więcej informacji, zobacz Visual Studio, ustawienia.

Przykład

Chociaż UIHierarchy obiekt reprezentuje zawartość niemal wszystkie narzędzia okna programu, który ma widok drzewa, takich jak Solution Explorer, w oknie Narzędzie, sam jest nadal Window obiektu.UIHierarchyItems Właściwość zwraca kolekcję węzłów najwyższego poziomu w oknie określonego narzędzia.W Solution Explorer, istnieje tylko jeden najwyższego poziomu węzeł (roztwór).W wyniku tego węzła projektu dla tego określonego okna jest w kolekcji węzła najwyższego poziomu, a nie w oknie UIHierarchyItems kolekcji.

Mając to na uwadze, istnieją dwa sposoby dostępu określonego węzła (UIHierarchyItem) w widoku drzewa:

  • Za pomocą GetItem metodę, aby bezpośrednio odwołać się za odpowiedni węzeł przy użyciu wzoru, roztwór/projektów/towarów.

  • Za pomocą UIHierarchyItems.Item.UIHierarchyItems... (wzór kolekcja/elementu/Kolekcja).

    Do zagłębienia się w zagnieżdżenia węzłów, po prostu dalej korzystać tego wzorca.Na przykład, aby przejść do węzła podrzędnego do węzła najwyższego poziomu, jak używasz UIHierarchy.UIHierarchyItems.Item(1).UIHierarchyItems.Item(2).

Przykłady sposobów użycia obu tych technikach dostępu węzeł niższego poziomu są wykazane w poniższych przykładach.

Te-dodatek przykłady przedstawiają sposób odwołania i używać różnych członków UIHierarchy modelu automatyzacji, aby wyświetlić listę wszystkich elementów w Solution Explorer.

W pierwszym przykładzie użyto GetItem strategii metoda uzyskania dostępu do zawartości węzeł odwołania w Solution Explorer.Aby uzyskać więcej informacji na temat uruchamiania kodu dodatek, zobacz Jak: skompilować i uruchomić przykłady kodu modelu obiektu automatyzacji.

[!UWAGA]

Przykład dla Solution Explorer jego dane są wysyłane do okna komunikatu.

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());
}

Poniższy przykład ilustruje sposób użycia UIHierarchy na wyświetlanie zawartości w widoku drzewa Solution Explorer 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

Zobacz też

Zadania

Jak: kontrola Solution Explorer

Jak: Zmienianie właściwości okna

Koncepcje

Wykres modelu obiektu automatyzacji

Inne zasoby

Tworzenia i kontrolowania środowisku systemu Windows.

Tworzenie dodatków i kreatorów

Automatyzacja i rozszerzalność odniesienia