Condividi tramite


Procedura: modificare le visualizzazioni ad albero mediante UIHierarchy

Alcune finestre degli strumenti in Visual Studio, come Esplora soluzioni, non dispongono di oggetti di automazione espliciti utilizzabili per modificare il contenuto.Queste finestre degli strumenti dispongono, tuttavia, di una visualizzazione struttura ad albero, ovvero di una visualizzazione dei nodi dalla struttura gerarchica alla quale è possibile accedere a livello di codice.L'oggetto UIHierarchy rappresenta le visualizzazioni struttura ad albero in queste finestre degli strumenti e consente di scorrerle e di visualizzare il contenuto dei relativi nodi.

Nome oggetto

Descrizione

Oggetto UIHierarchy

Rappresenta la visualizzazione struttura ad albero della finestra degli strumenti specificata.

Raccolta UIHierarchyItems

Rappresenta tutti i nodi nella visualizzazione struttura ad albero.

Oggetto UIHierarchyItem

Rappresenta un singolo nodo nella visualizzazione struttura ad albero.

Questi oggetti e queste raccolte consentono di:

  • Selezionare (nodo per nodo o più nodi contemporaneamente) e visualizzare i nodi nella visualizzazione struttura ad albero.

  • Spostare il punto di inserimento verso l'alto o verso il basso nella visualizzazione struttura ad albero.

  • Restituire il valore dell'elemento selezionato o fare in modo che esegua l'azione predefinita.

L'oggetto di ToolWindows (che viene restituito da ToolWindows) consente di fare riferimento più semplice a finestre degli strumenti in Visual Studio.Ad esempio, anziché utilizzare _applicationObject.Windows.Item(EnvDTE.Constants.vsWindowKindOutput) è ora possibile utilizzare _applicationObject.ToolWindows.OutputWindow.

[!NOTA]

È possibile che le finestre di dialogo e i comandi di menu visualizzati siano diversi da quelli descritti nella Guida a seconda delle impostazioni attive o dell'edizione del programma.Queste procedure sono state sviluppate con le Impostazioni generali per lo sviluppo attive.Per modificare le impostazioni, scegliere Importa/EsportaImpostazioni dal menu Strumenti.Per ulteriori informazioni, vedere Impostazioni di Visual Studio.

Esempio

Sebbene l'oggetto di UIHierarchy rappresenti il contenuto di quasi tutte le finestre degli strumenti con una visualizzazione struttura ad albero, come Esplora soluzioni, la finestra degli strumenti stessa è ancora un oggetto di Window.La proprietà UIHierarchyItems restituisce la raccolta dei nodi di primo livello nella finestra degli strumenti specificata.In Esplora soluzioni esiste un solo nodo di primo livello che corrisponde alla soluzione.Di conseguenza, il nodo del progetto per questa finestra sia nella raccolta del nodo di primo livello non nella raccolta di UIHierarchyItems della finestra.

Tenendo presente quanto sopra riportato, sono disponibili due modi per accedere a un nodo specifico (UIHierarchyItem) in una visualizzazione struttura ad albero:

  • Utilizzando il metodo GetItem per fare riferimento direttamente al nodo desiderato tramite un criterio soluzione/progetto/elemento.

  • Utilizzando UIHierarchyItems.Item.UIHierarchyItems..., un criterio raccolta/elemento/raccolta.

    Per passare all'interno dell'annidamento dei nodi, continuare ad utilizzare questo criterio.Ad esempio, per accedere a un nodo subordinato del nodo di primo livello, è possibile utilizzare UIHierarchy.UIHierarchyItems.Item(1).UIHierarchyItems.Item(2).

Di seguito vengono riportati alcuni esempi di come utilizzare entrambe le tecniche per accedere a un nodo di livello inferiore.

Questi esempi di componenti aggiuntivi viene illustrato come fare riferimento ai diversi membri del modello di automazione di UIHierarchy per elencare tutti gli elementi in Esplora soluzioni.

Nel primo esempio viene utilizzata la strategia del metodo GetItem per accedere al contenuto del nodo Riferimenti in Esplora soluzioni.Per ulteriori informazioni su come eseguire il codice del componente aggiuntivo, vedere Procedura: compilare ed eseguire gli esempi di codice del modello a oggetti di automazione.

[!NOTA]

L'esempio Esplora soluzioni ai dati vengono inviati a una finestra di messaggio.

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

Nell'esempio seguente viene illustrato come utilizzare UIHierarchy per elencare il contenuto della visualizzazione struttura ad albero della finestra Esplora soluzioni.

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

Vedere anche

Attività

Procedura: controllare Esplora soluzioni

Procedura: modificare le caratteristiche delle finestre

Concetti

Grafico del modello a oggetti di automazione

Altre risorse

Creazione e controllo delle finestre di ambiente

Creazione di componenti aggiuntivi e di procedure guidate

Riferimenti su Extensibility e automazione